Niedawno zostałem wprowadzony do AWS i bardzo mi się podobało. Jednak zadaję sobie kilka pytań (które mogą być głupie) o architekturę dla wielu regionów.Architektura AWS w przypadku wielu regionów
Załóżmy, że aplikacja jest używana przez Europejczyków i Azjatów. Moim pierwszym pomysłem było dodanie instancji EC2 w Europie, a także zasobnika S3 do przechowywania danych statycznych i kolejki SQS oraz ElastiCache w Europie. Dla Europejczyków będzie to niezwykle szybkie, ale wolniejsze dla Azjatów.
Aby rozwiązać ten problem, dodałabym CloudFront do statycznych danych, dzięki czemu obrazy będą szybko dostarczane również dla Azjatów. Jednak żądania do serwera (żądania Ajaxa) nadal będą miały pewne opóźnienia, więc rozwiązaniem będzie dodanie instancji EC2 również w regionie Singapur/Tokio.
Pojawia się jednak nowy problem: jeśli żądanie jest wysyłane do instancji Tokyo EC2, to jeśli potrzebuje odebrać wiadomość od SQS przechowywanego w Europie lub uzyskać dostęp do danych ElastiCache => opóźnienie + koszty transferu międzyregionalnego . Więc musimy dodać SQS i ElastiCache również w Azji?
Może brakuje mi czegoś, a międzyregionalne żądania AWS są superszybkie, ale z tego, co zrozumiałem, jeśli chcemy szybkiego doświadczenia dla wielu regionów, w zasadzie musimy powielić wszystkie usługi w każdym regionie (z wyjątkiem S3 może, ponieważ możemy użyć CloudFront do tego i przypuszczam, że możemy żyć z opóźnieniem, jeśli zadanie SQS w Azji potrzebuje dostępu do zasobu S3 w Europie).
W każdym razie, czy zrozumiałem to poprawnie? Czy masz jakieś zasoby na temat tworzenia aplikacji dla wielu regionów?
Dzięki :)
Dzięki za odpowiedź. Ponieważ mam dwie kolejki SQS (jedna w regionie Tokio i jedna w Irlandii), czy oznacza to, że muszę obsługiwać dwie różne aplikacje w EC2, aby połączyć się z właściwą kolejką SQS? A może trasa 53 jest wystarczająco inteligentna, aby wysłać ją do właściwej kolejki SQS na podstawie lokalizacji? –
Wyprodukowanie w SQS nie przechodzi przez Trasę 53, więc będziesz musiał sam wyprodukować poprawną kolejkę z poziomu aplikacji. Trasa 53 będzie po prostu kierowała żądania do najbliższego punktu końcowego na podstawie opóźnień (zakładając, że tak to konfigurujesz). Twoja aplikacja może korzystać z obu kolejek, ale pamiętaj, że kolejka, która znajduje się w odległym regionie, potrwa dłużej. –