• Akademia
  • Blog
  • O Serverless
  • O stronie

Nowo艣ci Serverless po AWS re:Invent 2019


Nowo艣ci Serverless po AWS re:Invent 2019

AWS re:Invent to najwi臋ksza konferencja po艣wi臋cona chmurze Amazon Web Services na 艣wiecie. Co roku 艣ci膮ga do Las Vegas rekordowe ilo艣ci specjalist贸w, w tym roku by艂o to oko艂o 65 tysi臋cy os贸b!

Poza skal膮, sza艂owym miejscem (Vegas Baby 馃槑) i przyt艂aczaj膮c膮 ilo艣ci膮 sesji: ponad 3000 wyk艂ad贸w, warsztat贸w i spotka艅, re:Invent jest znany z przyt艂aczaj膮cej ilo艣ci og艂osze艅 lub zapowiedzi nowy us艂ug b膮d藕 funkcjonalno艣ci w ju偶 istniej膮cych.

Nie inaczej by艂o i w tym roku. Po prawdzie, to nawet przed sam膮 imprez膮, kt贸ra trwa艂a w dniach 2-6 grudnia 2019, og艂oszonych zosta艂o wiele ciekawych rzeczy.

TL; DL;

Nie masz czasu? Zejd藕 na sam d贸艂 do mojego podsumowania, kliknij tutaj.

Nowo艣ci Serverless

W tym podsumowaniu zebra艂em najwa偶niejsze nowo艣ci w dziedzinie serverless, oczywi艣cie w chmurze AWS.s

Og艂oszenia przed re:Invent

Nowo艣膰 Link
Announcing improved VPC networking for AWS Lambda functions https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/
AWS Lambda Supports Amazon SQS FIFO (First-In-First-Out) as an Event Source https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-amazon-sqs-fifo-event-source/
New 鈥 Convert Your Single-Region Amazon DynamoDB Tables to Global Tables https://aws.amazon.com/blogs/aws/new-convert-your-single-region-amazon-dynamodb-tables-to-global-tables/
Announcing Amazon CloudWatch ServiceLens https://aws.amazon.com/about-aws/whats-new/2019/11/announcing-amazon-cloudwatch-servicelens/ https://aws.amazon.com/blogs/aws/visualize-and-monitor-highly-distributed-applications-with-amazon-cloudwatch-servicelens/
AWS Lambda Now Supports Maximum Event Age and Maximum Retry Attempts for Asynchronous Invocations https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-max-retry-attempts-event-age-asynchronous-invocations/
AWS Lambda Supports Destinations for Asynchronous Invocations https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-destinations-for-asynchronous-invocations/ https://aws.amazon.com/blogs/compute/introducing-aws-lambda-destinations/
nast臋pnie przysz艂a pora na te najciekawsze bo og艂aszane w trakcie sesji (wyk艂ady).

Og艂oszenia w trakcie re:Invent

Nowo艣膰 Link
Introducing Amazon EventBridge schema registry and discovery 鈥 In preview https://aws.amazon.com/blogs/compute/introducing-amazon-eventbridge-schema-registry-and-discovery-in-preview/
Lambda Provisioned Concurrency https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions
AWS Step Functions Express Workflows: High Performance & Low Cost https://aws.amazon.com/blogs/aws/new-aws-step-functions-express-workflows-high-performance-low-cost
Amazon RDS Proxy https://aws.amazon.com/about-aws/whats-new/2019/12/amazon-rds-proxy-available-in-preview/ https://aws.amazon.com/blogs/compute/using-amazon-rds-proxy-with-aws-lambda/
Announcing HTTP APIs for Amazon API Gateway - (Preview) https://aws.amazon.com/blogs/compute/announcing-http-apis-for-amazon-api-gateway/
Amplify DataStore 鈥 Simplify Development of Offline Apps with GraphQL https://aws.amazon.com/blogs/aws/amplify-datastore-simplify-development-of-offline-apps-with-graphql/
Introducing Amplify for iOS and Android https://aws.amazon.com/about-aws/whats-new/2019/12/introducing-amplify-for-ios-and-android/
Razem trzyna艣cie du偶ych nowo艣ci. Poni偶ej kr贸tkie podsumowanie wybranych z nich.

CloudWatch ServiceLens

Nowa us艂uga z kategorii obserwowalno艣ci, czyli narz臋dzie do szeroko rozumianego monitoringu.

Podobnie jak AWS X-Ray tworzy mapy wywo艂a艅 i przep艂ywu pomi臋dzy serwisami, ale dodatkowo agreguje informacje z metryk i przedstawia je w bardzo wygodnej formie. (Patrz obrazek po prawej stronie)

Maximum Event Age & Maximum Retry Attempts

Funkcje, kt贸re ustawiamy jako asynchroniczne przez AWS s膮 obs艂ugiwane w nast臋puj膮cy spos贸b

  1. Zdarzenie wywo艂uj膮ce jest umieszczane na wewn臋trznej kolejce (nale偶膮cej do AWS)
  2. Osobny proces czyta te zdarzenia z kolejki i uruchamia funkcje w naszym imieniu
  3. W przypadku wyst膮pienia b艂臋du w funkcji Lambda, zdarzenia wraca do kolejki i zostanie zn贸w przeprocesowane.
    Maksymalnie dwukrotnie mo偶e zosta膰 ponowione wywo艂ana Lambda tym samym zdarzeniem (razem 3 razy)

Do tej pory nie mogli艣my sterowa膰 tym mechanizmem. To si臋 zmieni艂o:

  • Maximum Retry Attempts - Mo偶na ustawi膰 od 0 do 2
  • Maximum Event Age - Od 60 sekund do 6 godzin (default)

AWS Lambda Destinations

Funkcje Lambda maj膮 s艂u偶y膰 transformacji danych, a nie ich przenoszeniu z miejsca A do B. To jedna z wa偶niejszych my艣li jakie, moim zdaniem, Chris Munns przekaza艂 w trakcie swojej sesji.

Zgodnie z tym pryncypium zosta艂y wprowadzone Lambda Destinations.

Tylko przy asynchronicznych wywo艂aniach

  • Przekazuje wynik funkcji w miejsce docelowe (destynacja) bez konieczno艣ci pisania kodu transportuj膮cego
  • Przekazuje informacje o b艂臋dzie funkcji w miejsce docelowe (destynacja)
    • Informacje o parametrach wej艣ciowych
    • Zawiera wi臋cej informacji ni偶 DLQ (Dead Letter Queue)

Provisioned Concurrency for Lambda Functions

Przeciwdzia艂a cold-startom

  • Mo偶emy zdefiniowa膰 ilo艣膰 instancji tej samej funkcji Lambda, kt贸re maj膮 by膰 gotowe do dzia艂ania (rozgrzane)
  • P艂acimy za czas dzia艂ania tych funkcji w stanie gotowo艣ci!
  • Mo偶emy dynamicznie zmienia膰 ilo艣膰 rozgrzanych funkcji (analogicznie jak auto-scaling w EC2 鈥 lag oko艂o 2 min.)
  • Od utylizacji na poziomie 85% zaczyna by膰 ta艅sze ni偶 zwyk艂y model (鈥瀘n demand鈥)

Poni偶szy wykres pokazuje tzw. long-tail czas贸w wywo艂ania funkcji Lambda. To zjawisko jest powszechne i wyst臋puje nie tylko w przypadku Lambd. Chodzi o to, 偶e zdarzaj膮 si臋 偶膮dania, kt贸re wyst臋puj膮 rzadko ale trwaj膮 bardzo d艂ugo. Jak wida膰 na wykresie (niebieskie s艂upki) 90% wywo艂a艅 zajmuje nie wi臋cej ni偶 450 milisekund, natomiast pozosta艂e 10% dobija prawie do 2 sekund! Ten problem rozwi膮zuje Provisioned Concurrency.

Jest to oczywi艣cie lepsze rozwi膮zanie ni偶 dotychczas (sztuczny ruch rozgrzewa艂 funkcje, ale je te偶 wykonywa艂). Niestety troch臋 odchodzi od idei pay-as-you-go bo si臋 deklarujemy ile u偶yjemy

*Amazon RDS Proxy *


To pula po艂膮cze艅 do bazy RDS zarz膮dzania przez AWS

  • Eliminuje problem wysycenia po艂膮cze艅
  • Zwi臋ksza skalowalno艣膰 aplikacji serverless korzystaj膮cych z relacyjnych baz
  • Po艂膮czenia TCP, na razie tylko MySQL i Aurora (MySQL)


Jak to dzia艂a?
Test przeprowadzony na bazie Aurora, 30 wirtualnych u偶ytkownik贸w, ka偶dy wysy艂a 300 偶膮da艅, wykonany poleceniem artillery quick --count 300 -n 30 https://enpoint-api-gw....

Bezpo艣rednio do bazy Przez RDS Proxy
Przed testem: 18 po艂膮cze艅
Max w czasie testu: 124 po艂膮czenia
Przed testem: 18 po艂膮cze艅
Max w czasie testu: 43 po艂膮czenia
殴r贸d艂o: https://qiita.com/G-awa/items/b9138cc1c9e4867a905e

Jak wida膰 RDS Proxy pozwala blisko trzykrotnie ograniczy膰 ilo艣膰 otwartych po艂膮cze艅 do bazy, co jest znakomitym wynikiem.

Improved VPC networking for AWS Lambda functions

To jest dosy膰 stary news, ale wart przypomnienia. Dzi臋ki optymalizacji urz膮dze艅 sieciowych w VPC, AWS uda艂o si臋 zmniejszy膰 cold-start Lambd w VPC z 14 sekund do nieca艂ej sekundy. Dzi臋ki czemu korzystanie z tego typu rozwi膮zania zaczyna mie膰 sens r贸wnie偶 przy synchronicznych wywo艂aniach!

Improved VPC networking for AWS Lambda functions

HTTP APIs for Amazon API Gateway

Kolejny, zupe艂nie nowy, typ API Gateway obok trzech ju偶 istniej膮cych:

  • REST API
  • REST API Privet
  • WebSocket APIs
  • HTTP API

Mniejszy koszt:

  • Cena spada z $3.50 za milion 偶膮da艅 do $1
  • 70% taniej dla wi臋kszo艣ci klient贸w - tak twierdzi AWS

Szybsze dzia艂anie鈥

  • 鈥50% latency reduction鈥 - zn贸w wypowied藕 AWS.

HTTP API jest zoptymalizowane pod wzgl臋dem wydajno艣ci. Natomiast oferuje ograniczon膮 funkcjonalno艣膰 wzgl臋dem REST API:

  • tylko proxy
  • Brak w艂asnych autoryzator贸w (custom authorizer)
  • Ale jest wsparcie dla JWT

Podsumowanie

Osobi艣cie jestem zdania, 偶e w艣r贸d wielu nowo艣ci najwi臋ksze znaczenie ma nowe HTTP API w us艂udze API Gateway zapewniaj膮ce nawet do 70% oszcz臋dno艣ci i o oko艂o po艂ow臋 mniejsze op贸藕nienia w stosunku do REST API.

Drug膮 r贸wnie wa偶n膮 nowo艣ci膮 jest wprowadzenie us艂ugi RDS Proxy, kt贸ra jest zarz膮dzan膮 przez AWS pul膮 po艂膮cze艅 do relacyjnych baz danych w RDS. Wraz z likwidacj膮 cold start贸w w VPC, kt贸ra mia艂a miejsce we wrze艣niu, otwiera bardzo du偶o mo偶liwo艣ci budowy system贸w serverless integruj膮cych si臋 z istniej膮cymi relacyjnymi bazami danych, kt贸rych przecie偶 jest najwi臋cej na 艣wiecie. To na pewno przyczyni si臋 do jeszcze wi臋kszej adopcji serverless przez firmy, gdy偶 nie b臋d膮 musia艂y rezygnowa膰 z technologii (SQL), kt贸ra im towarzyszy od dziesi臋cioleci.