Wprowadzenie do Serverless w chmurze Amazon Web Services
Piotr Grzesik
Agenda
- Amazon Web Services
- Co definiujemy jako "serverless"?
- AWS Lambda
- API Gateway
- SQS
- EventBridge
- SNS
- DynamoDB
- Cognito
- S3
Amazon Web Services
Amazon Web Services jest platformą oferującą usługi w modelu "Cloud Computing". Została udostępniona w roku 2006, początkowo oferując tylko trzy usługi (Amazon Simple Storage Service, Amazon Simple Queue Service, Amazon Elastic Compute Cloud), natomiast aktualnie oferuje ponad 300 różnych serwisów w kategoriach jak Compute, Storage, Database, Migration, Network and Content Delivery, Management Tools, Messaging, Security, Identity & Compliance
Czym jest "serverless"?
Serverless jest modelem architektury chmurowej, w którym użytkownik może uruchamiać aplikacje czy usługi bez konieczności zarządzania infrastrukturą, najczęściej w modelu płatności "pay-per-use".
Zalety serverless
- Brak konieczności manualnego zarządzania infrastrukturą
- "Nieskończona" skalowalność
- Wysoka dostępność
- Automatyczne dostosowywanie się środowiska do aktualnego ruchu
- Większe skupienie się na logice biznesowej aplikacji
- Rozliczenie w modelu "pay-per-use"
Wady serverless
- Ograniczenia w wydajności pojedynczych instancji
- Utrudnione testowanie, debuggowanie, monitorowanie
- Złożoność rozwiązania związana z przetwarzaniem rozproszonym
- Vendor lock-in
- Rozliczenie w modelu "pay-per-use"
Przykłady wykorzystania
serverless
- Przetwarzanie obrazów (np. w odpowiedzi na upload obrazka)
- Reagowanie na zmiany w bazie danych (np. audyt zmian)
- Przetwarzanie odczytów z sensorów IoT (np. przetwarzanie odczytów temperatury z czujników)
- Przetwarzanie strumieniowe (np. przetwarzanie strumienia wiadomości pochodzących z różnych aplikacji)
- Wykonywanie zaplanowanych akcji (np. wykonywanie backupów)
- REST lub GraphQL APIs (e.g. aplikacji webowe)
Kiedy serverless
to niekoniecznie dobry wybór
- Aplikacje wymagające bardzo niskich opóźnień (np. aplikacje tradingowe)
- Aplikacje o wysokim, bardzo przewidywalnym ruchu (np. przetwarzanie wsadowe stałych zbiorów danych)
- Aplikacje wymagające akceleracji sprzętowej (np. trenowanie modeli ML)
- Zadania długotrwające (np. zadanie które trwa ponad godzinę, którego nie możemy w łatwy sposób zdekomponować)
AWS Lambda
- Platforma obliczeniowa w modelu serverless
- Wspiera natywnie środowiska takie jak Python, Node.js, .NET, czy Java, a także dowolny "custom runtime"
- Rozliczenie w modelu "pay-per-use"
- Limit czasu wykonywania - 15 minut
- Maksymalna dostępna pamięć 10240 MB oraz 6 vCPU dla pojedynczej instancji
- Łatwa integracja z innymi usługami AWS takimi jak SQS, API Gateway, czy S3
Model AWS Lambda
https://docs.aws.amazon.com/images/serverless/latest/devguide/images/s_lambda/lambda-arch-overview.png
Rodzaje zdarzeń wspieranych przez AWS Lambda
- Amazon API Gateway
- Amazon SQS
- Amazon S3
- Amazon SNS
- Amazon EventBridge
- Amazon DynamoDB
- ... i wiele więcej
Live Demo
Amazon API Gateway
- Usługa pozwalająca na tworzenie i zarządzanie API
- Automatycznie skalowalna, wspiera tysiące jednoczesnych połączeń
- Oferuje wsparcie dla autentykacji/autoryzacji API
- Wspiera integracje z różnymi serwisami AWS, m.in. AWS Lambda
- Pozwala na wersjonowanie oraz definicję "stages" dla API
Live Demo
Amazon S3
- Usługa oferująca przestrzeń dyskową pozwalającą na przechowywanie plików (object storage)
- Wspiera rożne klasy "storage", różniące się ceną, trwałością, oraz szybkością dostępu do danych
- Wspiera automatyczne reguły zarządzania plikami (np. usuwanie po 30 dniach)
- Może być wykorzystany jako źródło zdarzenia dla funkcji Lambda
Live Demo
Amazon SQS
- Usługa kolejki pozwalającej na przesyłanie wiadomości między serwisami
- Oferuje wsparcie dla kolejek w modelu FIFO (First In, First Out)
- Nie wymaga zarządzania i manualnego skalowania
- Pozwala na przechowywanie wiadomości w kolejce do 14 dni
Live Demo
Amazon EventBridge
- Usługa oferująca "event bus" między serwisami
- Pozwala na reakcję na zdarzenie przez kilka aplikacji jednocześnie
- Wspiera zaawansowane reguły dotyczące filtrowania wiadomości
- Wspiera persystencję oraz możliwość ponownego odtworzenia zdarzeń
- Wspiera wykonywanie zdarzeń w zadanym czasie (cron-like)
- Nie zapewnia kolejności przetwarzania zdarzeń
Live Demo
Amazon SNS
- Usługa pozwalająca na wymianę wiadomości między producentami a subskrybentami
- Opiera się na asynchronicznej komunikacji poprzez "topics"
- Wspiera model FIFO
- Ograniczone możliwości filtrowania wiadomości
- Wspiera bezpośrednie publikowanie mobilnych wiadomości push
Live Demo
Amazon DynamoDB
- Baza danych NoSQL w modelu serverless, w pełni zarządzana i skalowana przez AWS
- Wspiera operacje zapisu/odczytu z opoźnieniami rzędu kilku milisekund
- Wspiera model rozliczeń "on demand" lub "provisioned"
- Wspiera obsługę milionów zapytań na sekundę
- Pozwala na reakcję na zmiany w tabelach poprzez DynamoDB Streams
- Wspiera globalną replikację danych (poprzez global tables)
Live Demo
Amazon Cognito
- Usługa pozwalająca na zarządzanie użytkownikami, autoryzacją oraz autentykacją
- Pozwala użytkownikom na tymczasowy dostęp do usług AWS
- Oferuje integrację z Facebook, Google oraz innymi dostawcami zewnętrznymi
- Wspiera SAML oraz OpenID Connect
- Wspiera MFA (Multi-Factor Authentication)
Live Demo
Przykładowy diagram architektury serverless
Popularne frameworki do budowy aplikacji serverless
- AWS SAM - https://aws.amazon.com/serverless/sam/
- SST - https://sst.dev/
- Serverless Framework - https://github.com/serverless/serverless
- Serverless.TF - https://serverless.tf/
- Architect - https://arc.codes/
- AWS CDK - https://aws.amazon.com/cdk/
Q&A + Contact
@p_grzesik
contact@pgrzesik.com
Wprowadzenie do serverless w chmurze Amazon Web Services
By progressive
Wprowadzenie do serverless w chmurze Amazon Web Services
- 16