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,578