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