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
Made with Slides.com