Amazon API Gateway, avagy a servernélküli architektúra

Amazon Web Services

  • >90%-a a publikus felhőkapacitásnak
  • Rengeteg szolgáltatás (videókonverter/streaming, directory services, key management, email, DNS, CDN stb.)
  • 11 régió + GovCloud

AWS szolgáltatások #1

  • Identity and Access Management
    • Amazon erőforrások elérésének korlátozása
    • Userek, Role-ok, Policy-k.
  • EC2, VPC
    • A klasszikus szolgáltatások, VM + hálózat
    • ELB-k, Autoscaling
  • RDS
    • Managelt RDBMS

AWS szolgáltatások #2

  • DynamoDB
    • NoSQL adatbázis, séma nélkül.
    • Másodlagos indexek vannak
  • Kinesis
    • Nagy sebességű queue rendszer
  • Lambda
    • NodeJS vagy Java függvényeket kell feltölteni
    • Különböző triggerek
  • API Gateway
    • Összekattintgatható API.

API Gateway Pattern

  • Egy új réteg a meglévő APIjaink fölé
  • Protokoll transzformáció
  • Kevesebb request a kliens felől
  • Facade pattern az OOP-ben.

AWS Lambda

  • IaaS -> PaaS -> ???
  • Állapotfüggetlen kódot, függvényeket lehet feltölteni, és különböző triggerek hatására lehet aktiválni
  • Java8 és Nodejs
  • Triggerek:
    • S3 feltöltés
    • Dynamo Streams
    • Kinesis
    • CloudTrail
    • SNS
    • API Gateway

AWS Lambda #2

  • Billing: bonyolult
    • Per GB-másodperc használatért és függvényhívásért is
    • $0.20 per 1 millió fvhívás
    • $0.06 per GB-óra
  • Elvileg skálázódik, gyakorlatilag van limitje
    • Default-ból 100 konkurrens végrehajtás, lehet kérni hogy emeljék
  • Debuggolni eléggé nehéz
  • Monitoring CloudWatch-ban.

AWS Kinesis

  • Nagy sebességű queue service
  • 24 óráig tárolja az adatot.
  • Skálázódik, de nem automatikusan
    • Shardok: 1MB Write, 2MB Read
    • Shard Split és Merge

AWS API Gateway

  • API Gateway pattern
  • Frontend a lambda-hoz
  • Összekattogtatható API
    • HTTP metódusok
    • Headerek
    • HTTP error kódok
  • Protokoll transzformáció
    • XML -> JSON
  • Backend
    • Lambda
    • AWS API (AWS Service Proxy)
    • Saját API (HTTP Proxy)
    • Mock

AWS API Gateway #2

  • Model
    • JSON schema 
  • Mapping template
    • VTL templatek
    • Schemák közti mapping
  • Stage
    • Különböző beállítások (nem túl sok lehetőség)
    • Verziózás
  • API keys
    • API,Stage pároshoz lehet rendelni

AWS API Gateway #3

  • Nem tud sütiket kezelni
  • Nincs hozzá elterjedt automatizáció.
    • boto, cloudformation, vagy awscli
  • Debuggolás nehéz.
  • Monitorozás CloudWatch-ban
  • Publikusan elérhető
  • Stage változók hiánya
    • Nem lehet különböző stage-ekben különböző lambda-kat hívni

Példa AWS architecture

Limitációk

 

  • Költségek
    • Beállított átviteli limit ÉS aktuális használat után is kell fizetni
    • Amazon Lambda: sok timeout sokba tud kerülni, miközben nem csinál semmit a lambda fv.
  • Amazon DynamoDB Streams -> shardolás automatikus, és egy shardra 1 lambda megy.
  • Cloudwatch
    • Cloudwatchból logokat küldeni -> Kinesis -> Lambda
  • Troubleshooting nehézkes
  • Tesztelés nehézkes

Limitációk #2

 

  • Nem minden skálázódik automatán
    • Kinesis sharding
    • DynamoDB provisioned capacity
  • IAM role-ok nem teljesen finomhangoltak a lambdánál
  • VPC-kbe nem lát bele se a Lambda, se az API Gateway.

Előnyök

  • Ez a jövő :)
  • Nincs üzemeltetési költség
  • Deklaratív leírása a környezetnek és az infrastruktúrának
    • Cloudformation
  • Képes tényleg költséghatékony lenni
  • On-premise nagyon nehéz összerakni egy ilyen rendszert

Demó helyett

http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html

Köszönöm a figyelmet!

Tusa Viktor

AWS Serverless Architecture

By Tusa Viktor

AWS Serverless Architecture

  • 1,440