Paweł Łukasiewicz
2021-10-05
Paweł Łukasiewicz
2021-10-05
Udostępnij Udostępnij Kontakt
Wprowadzenie

Poniższy przykład przedstawia podstawową architekturę dla AWS EC2 gdzie EC2 to skrót od Elastic Compute Cloud. Jest to serwis pozwalający na korzystanie z maszyn wirtualnych o różnych konfiguracjach, które możemy dopasować do własnych wymagań. AWS: przykładowa architektura Na powyższym diagramie obecny jest również komponent Amazon S3 (Amazon Simple Storage Service) – jest to internetowy nośnik danych pozwalający na przechowywanie i pobieranie różnego typu danych przy pomocy dostępnego API.

Przejdźmy do krótkiego omówienia kluczowych elementów architektury AWS.

Load Balancing

Komponent równoważenia obciążenia w architekturze AWS pomaga zwiększyć wydajność aplikacji oraz serwera. Sprzętowy load balancing jest bardzo powszechnym urządzeniem sieciowym stosowanym w tradycyjnych architekturach aplikacji webowych.

W przypadku AWS do naszej dyspozycji została oddana usługa Elastic Load Balancing, która dystrybuuje ruch do instacji EC2 z wielu dostępnych źródeł a także dynamicznie dodaje lub usuwa hosty Amazon EC2.

Elastic Load Balancing może również dynamicznie zwiększać i zmniejszać przepustowość load-balancingu w zależności od warunków ruchu.

Amazon Cloud Front

Usługa ta odpowiedzialna jest za dostarczanie treści dla stron internetowych. Może zawierać treści statyczne, dynamiczne oraz przekazywane w czasie rzeczywistym, tj. streaming. Istotnym faktem jest to, że treści kierowane do użytkownika są automatycznie pobierane z najbliższej lokalizacji względem wykonanego żądania co znacząco poprawia szybkość wczytywania danej witryny.

Amazon Cloud Front jest zoptymalizowany względem współpracy z innymi usługami takimi jak Amazon S3 czy EC2. Usługa taka nie wymaga żadnych dodatkowych umów czy ukrytych kosztów – podobnie jak w przypadku wcześniej wspomnianych komponentów płacimy tylko za ilość treści, którą dostarczamy za pośrednictwem usługi.

Security Management

Serwis Amazon EC2 udostępnia funkcję zwaną ‘grupami bezpieczeństwa’, która jest podobna do zapory sieciowej w której musimy określić protokoły, porty oraz źródłowe adresy IP, które są dozwolone i pozwalają dotrzeć do naszych instacji EC2.

Każdej instancji możemy przypisać jedną lub więcej grup bezpieczeństwa dzięki czemu ruch będzie kierowany do odpowiedniej instancji. Grupy bezpieczeństwa możemy klasyfikować przy użyciu konkretnych podsieci lub adresów IP ograniczając dostęp z zewnątrz.

Elastic Cache

Amazon Elastic Cache jest usługą webową, która zarządza pamięcią podręczną w chmurze. Cache ma niezwykle ważną rolę w zarządzaniu pamięcią ponieważ pozwala zmniejszyć obciążenie usług, poprawia wydajność i skalowalność na warstwie bazy danych poprzez buforowanie często używanych informacji.

Amazon RDS

Amazon RDS (Relational Database Service) zapewnia podobny dostęp jak silnik bazy danych MySQL, Oracle lub Microsoft SQL. Te same zapytania, aplikacje i narzędzia mogą być używane z Amazon RDS.

Usługa automatycznie wprowadza wszelkie poprawki oprogramowania oraz zarządza kopiami zapasowymi zgodnie z instrukcjami użytkownika. Pozwala również na tworzenie punktów odzyskiwania danych (point-in-time recovery). Podobnie jak w poprzednich przypadkach płacimy jedynie za zasoby z których korzystamy.

Usługa pozwala instalować systemy relacyjnego zarządzania bazami danych na instancjach EC2. Wykorzystują one Amazon EBS (Elastic Block Storage), który możemy opisać jako surową pamięć blokową – wszystkie dane i logi powinny być umieszczone na tej pamięci dzięki czemu będą dostępne nawet w przypadku awarii hosta naszej bazy danych.

Wolumeny EBS zapewniają automatyczną redundancję w obrębie stref dostępności (regionów) oraz mogą być dodawane do instancji EC2 w celu zwiększenia wydajności naszej bazy danych. W przypadku wykorzystania tej usługi skupiamy się jedynie na zarządzaniu danymi – reszta leży po stronie dostawcy usługi.

Przechowywanie i kopie zapasowe

AWS dostarcza różne opcje przechowywania, dostępu oraz tworzenia kopi zapasowych danych oraz wszelkich zasobów aplikacji internetowych. Wspomniany wcześniej Amazon S3 zapewnia prosty interfejs który możemy wykorzystać do przechowywania oraz pobierania dowolnej ilości danych, w dowolnym czasie i z dowolnego miejsca na Ziemi (oczywiście z dostępem do Internetu).

S3 przechowuje dane jako obiekty w ramach zasobów zwanych kubełkami/wiadrami (buckets). Użytkownik może przechowywać tak dużo obiektów jak potrzebuje, może je odczytywać, zapisywać lub usuwać.

Wolumeny EBS dołączane są do instancji EC2 w celu zapewnienia ciągłości przechowywania danych – nawet po wyłączeniu instancji nie utracimy danych. Rozwiązanie to możemy porównać do tradycjnych dysków twardych. Dane przechowywane są w blokach o jednakowej wielkości (block storage service). System ten charakteryzuje się korzyściami związanymi z wydajnością w porównaniu do tradycjnej pamięci masowej oraz oferuje mniejsze opóźnienia przy dostępie do danych.

Automatyczne skalowanie

Różnica pomiędzy tradycyjnym modelem hostingu a architekturą chmury AWS polega na dynamicznym skalowaniu aplikacji webowej w zależności od liczby żądań oraz sposobu obsługi ruchu z różnych źródeł.

W tradycyjnym modelu zwykle prognozujemy przewidywany ruch i na tej bazie przygotowujemy całą architekturę. W przypadku AWS korzystamy z automatycznego skalowania w locie, które dopasowuje się do liczby żądań przychodzących do naszej aplikacji. Amazon Auto Scaling monitoruje nasze aplikacje i automatycznie dopasowuje liczbę zasobów zapewniając przewidywalną wydajność całego systemu przy zachowaniu najniższych możliwych kosztów.

Podsumowanie

Zanim przejdziemy do kolejnego wpisu podsumujemy kluczowe elementy infrastruktury AWS:

  • Brak konieczności stosowania fizycznych urządzeń sieciowych: w przypadku AWS urządzenia sieciowe takie jak zapory, routery czy load-balancery nie wystąpują na urządzeniach fizycznych a są zastępowane specjalistycznym oprogramowaniem;
  • Bezpieczeństwo: (pomijając świadomość przechowywania danych u zewnętrznego dostawy): AWS dostarcza bardzo bezpieczny model w którym każdy host jest zablokowany. Grupy bezpieczeństwa przygotowane dla instancji EC2 zapewniają dużą różnorodność prostych i warstowych modeli bezpieczeństwa, których celem jest ograniczenie dostępu z niezweryfkowanych źródeł;
  • Dostępność centrów danych: Instancje EC2 dostępne są w większości stref dostępności w ramach różnych regionów działalności operacyjnej zapewniając możliwość wdrażania aplikacji w różnych centrach danych przy zachowaniu wysokiej dostępności i niezawodności.