Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies. Sprawdź jej szczegóły Polityki Prywatności i Cookies.

Akceptuję arrow

Serverlessowa soczewka
w Well-Architected Tool

5.8.2020 | LCloud
Udostępnij:

Dobrze zaprojektowana aplikacja to gwarancja dostarczania usług na najwyższym poziomie. Mając wieloletnie doświadczenie w pracy z chmurą AWS oraz jako AWS Well-Architected Consulting Partner, zjedliśmy zęby na dostarczaniu najwyższej jakości usług na podstawie Well-Architected Framework. O frameworku pisaliśmy już wcześniej na naszym blogu, a wpis znajdziecie pod tym linkiem. W tym wpisie przybliżymy Wam obszary, które należy wziąć pod uwagę podczas budowania aplikacji serverlessowej oraz jak działa Serverless Lens – najświeższy zbiór najlepszych praktyk od AWS.

Zacznijmy od wymienienia obszarów, które są istotne w procesie projektowania aplikacji. Są to:

  • warstwa compute/obliczeniowa
  • warstwa danych
  • warstwa streamingu i przesyłu wiadomości
  • warstwa zarządzania tożsamością użytkownika 
  • warstwa krańcowa/brzegowa (edge)
  • deployment i monitoring systemów
  • podejścia w deploymencie

By odpowiednio podejść zarówno do budowania, jak i wdrażania ulepszeń, warto na początku ustalić cele, które chcemy osiągnąć podczas projektowania lub zdiagnozować elementy wymagające zmiany, w istniejącej aplikacji za pomocą AWS Well Architected Tool, które znajduje się w AWS Management Console. Zanim jednak przejdziemy do kwestii jak ustawić Serverless Lens w konsoli, omówmy poszczególne obszary z nią związane. 

Warstwa Compute

Odpowiedzialna jest za zarządzanie requestami z systemów zewnętrznych, kontrolując dostępy i dbając o poprawność ich autoryzacji. Zawiera środowisko wykonawcze, w którym można wdrażać i realizować procesy biznesowe.

Usługi AWS przydatne w warstwie compute:

  • AWS Lambda – pozwala na bezstanowe wdrożenie i uruchomienie serverlessowej aplikacji, za pomocą platform obsługującej mikroserwisy, deployment i zarządzanie wykonawstwem w warstwie funkcyjnej.
  • Amazon API Gateway – pozwala na uruchomienie w pełni zarządzalnego interfejsu API REST, który integruje się z Lambdą w celu wdrożenia logiki biznesowej . Umożliwia również zarządzanie ruchem, autoryzacją, kontrolą dostępu, monitoringiem i wersjonowaniem API.
  • AWS Step Functions – umożliwia sterowanie workflow’ami w tym koordynacją, stanem i łańcuchem funkcji oraz długoterminowymi wdrożeniami, nieobsługiwanymi przez AWS Lambdę. Dzieląc je tym samym na kilka kroków i wywołując workery na instancjach EC2 lub serwerach on-premise.

Warstwa danych

Odpowiedzialna jest za zarządzanie trwałym magazynowaniem danych z poziomu systemu. Dostarcza mechanizmów zapewniających bezpieczne przechowywanie informacji. Zapewnia również mechanizmy do wyzwalania zdarzeń (events triggering) w odpowiedzi na zmiany danych.

Usługi AWS przydatne w warstwie danych:

  • Amazon DynamoDB – jest bazą danych NoSQL i została zaprojektowana do przechowywania i zarządzania danymi w formie pojedynczej tabeli. Sama tabela Dynamo DB może być zlokalizowana w wielu regionach AWS i działać jako tabela multimaster. Jej możliwości pozwalają na obsłużenie ponad 10 bilionów requestów dziennie oraz przyjęcie do 20 milionów requestów na sekundę.
  • Amazon S3 – usługa pozwalająca na przechowywanie plików, dostępna za pomocą https. Pozwala na udostępnianie zasobów statycznych obsługiwanych za pośrednictwem sieci dostarczania treści (CDN), takiej jak Amazon CloudFront.
  • Amazon Elasticsearch Service – jest popularnym silnikiem wyszukiwania i analizy typu open source. Swoje zastosowanie znajdzie w takich działaniach jak analiza dzienników, monitorowanie aplikacji w czasie rzeczywistym czy analiza click stream.
  • AWS AppSync – to gotowy backend do aplikacji mobilnych i webowych (serverless) przyspiesza budowanie aplikacji, zapewniając narzędzie do zarządzania i subskrybowania danych w czasie rzeczywistym, z synchronizacją między urządzeniami oraz obsługą trybu offline. 

Warstwa streamingu i przesyłu wiadomości 

Można powiedzieć, że to warstwa komunikacyjna. Warstwa wiadomości odpowiada za komunikację pomiędzy poszczególnymi komponentami środowiska. Warstwa streamingu odpowiada za zarządzanie analizą i przetwarzaniem danych w czasie rzeczywistym. 

  • Amazon SNS – usługa odpowiedzialna za wysyłanie powiadomień w różnej formie – mail, sms, powiadomienia push. SNS ma możliwość integracji z różnymi aplikacjami i serwisami w chmurze AWS.
  • Amazon Kinesis – usługa służąca do zbierania danych z różnych źródeł, np. Internet of Things. Urządzenia streamują dużo danych, które trafiają do Kinesis. Użytkownik sam może umieścić dane w aplikacji lub Kinesis umieszcza je w S3 lub Redshift za niego.
  • Amazon Kinesis Data Firehose – usługa służąca do przechwytywania, przekształcania i przesyłania danych ze strumienia do S3, Amazon Redshift czy Amazon Elasticsearch Service czy Splunk.
Warstwa zarządzania tożsamością użytkownika 

Odpowiada za zarządzanie tożsamością, uwierzytelnianiem i autoryzacją interfejsu zarówno zewnętrznym, jak i wewnętrznym klientom. 

  • Amazon Cognito – zapewnia nadzór nad nietypowym zachowanie użytkownika, pozwalając deweloperowi zdecydować, co w nietypowej sytuacji zrobić (np. Logowanie z nietypowej lokalizacji, nieznanego urządzenia czy w dwóch innych lokacjach jednocześnie). W rozwiązaniach opartych o AWS Lambda pozwala skupić się na wdrożeniu logiki biznesowej, implementując poprzez SDK weryfikację tożsamości na podstawie zapytania do danego endpointu API.
Warstwa brzegowa(edge)

Odpowiedzialna jest za kwestie prezentacyjne i łączność z klientami zewnętrznymi. Amazon CloudFront zapewnia CDN, który w bezpieczny sposób dostarcza treści i dane z aplikacji internetowych przy małych opóźnieniach i dużych prędkościach przesyłu.

  • Amazon CloudFront zapewnia sieć CDN dostarczającą w bezpieczny sposób treści i dane z aplikacji webowych, z uwzględnieniem małych opóźnień i szybkiego przesyłu.
Monitoring systemów i deployment

Warstwa monitoringu odpowiedzialna jest za zarządzanie widocznością systemu poprzez tworzenie metryk oraz tworzenie kontekstualnej świadomości, jak system działa i zachowuje się w czasie. Warstwa deploymentu definiuje, w jaki sposób zmieniają się workloady podczas wersjonowania w procesie zarządzania.

  • Amazon CloudWatch – dostarcza niezbędnych informacji ze wskaźnikami ze wszystkich aktywnych na koncie usług AWS. Pozwala na tworzenie dzienników logów na poziomie aplikacji, jak i systemu.Umożliwia tworzenie KPI jako customowych wskaźników użytkownika.
  • AWS X-Ray – umożliwia na analizowanie i debugowanie aplikacji serverlessowych. Dostarcza mapy rozproszonego śledzenia i usług, pomagające w identyfikacji bottleneck’ów z wizualizacją requestów end-to-end.
  • AWS SAM (Serverless Application Model) – to framework wspierający AWS CloudFormation, który służy do testowania i wdrażania aplikacji serverlessowych. Interfejs AWS SAM może również umożliwić szybsze cykle debugowania podczas lokalnego rozwijania funkcji Lambda.
Podejścia w deploymencie

We wdrożeniach warto kierować się najlepszymi praktykami. Najważniejszą zasadą jest trzymanie się ustalonych wcześniej warunków i dbanie by wdrażane zmiany nie naruszały kontraktu. W momencie, gdy właściciel API wdroży zmiany naruszające umowę serwisową , a użytkownik nie jest na to gotowy, pojawia się ryzyko awarii. 

Warto zwrócić uwagę na fakt, że w zależności od potrzeb klienta istnieje możliwość wyboru podejścia. Poniższa tabela pokrótce opisuje daną opcję, wpływ na aplikację klienta czy jej szybkość. Dokładny opis każdego z nich znajduje się w linku źródłowym pod tabelą. 

Źródło: AWS Serverless Lens Whitepaper

Jak działa Serverless Lens? 

Well-Architected Tool jest bezpłatne, a opłata naliczana jest jedynie za niezbędne do prac naprawczych zasoby AWS. W konsoli AWS po ustawieniu niezbędnych parametrów związanych z workloadami, w kolejnym kroku wybieramy “soczewkę”(lens) spośród 2 opcji.

Po wybraniu Serverless Lens pojawia się seria pytań związanych z każdym z 5.-ciu filarów (operacyjnym, wydajnościowym itd.). Po udzieleniu odpowiedzi, ich zapisaniu pojawia się komunikat związany z ryzykiem.

Zaraz pod daną kategorią ryzyka pojawiają się sugestie związane z planem naprawczym. Po rozwinięciu listy pojawiają się konkretne propozycje wraz z linkami do whitepaperów AWS związanych z wcześniej udzielonymi  odpowiedziami.

Dostępność narzędzia Well-Architected można sprawdzić w tabeli regionów AWS. Warto wykorzystać nową możliwość związaną z Serverless Lens, by ulepszyć aplikację, nad którą trwają prac, lub by uzyskać wgląd w dotychczasowe workloady i zdefiniować je na nowo. Warto pamiętać, że dane wyjściowe z narzędzia to raport z zagrożeniami i listą sugestii działań naprawczych, dlatego warto korzystać z Well-Architected Tool podczas całego cyklu życia aplikacji.