Processando alta demanda de
requisições com os serviços API
Gateway, Lambda e Kinesis
Flávio Pimenta
Problema: atender todo mundo !!
Arquitetura na época
Problemas
Custo04 min 5 e máx de 20 EC2
Perda de dados03 erros 50x (500, 502,504)
Banco de dados02 sobrecarga e lentidão
Autoscaling01 alguns picos durante o dia
Ideias para nova solução
Custo04
usar mais serviços sob
demanda em vez de EC2
Perda de dados03 "represar"
Banco de dados02 "gravar devagar"
Autoscaling01 serverless
Nova solução
API Gateway
Monitoramento
Performance
Rate limit (req/s)
Lambda
Escalabilidade
Performance
Python (cold start)
Custo por requisição
Queue vs Stream
Kinesis
Stream de dados
Escala com shards
Alta Performance
(~1000 rps/shard)
Baixo custo
Worker Java como task no ECS
Consome Kinesis
Grava em lote no DB
Migrado para docker
Deploy 1 task no ECS
Nova solução
Ferramenta para testes de performance:
● https://github.com/locustio/locust
● Utiliza Python !
● Escalável
Escrita do teste
Execução
locust -f locustfile.py --host=endpoint-aplicacao
http://localhost:8089
Monitoramento API Gateway
Uso em 1 dia, acumulado por hora
Fonte de exemplos!!
https://github.com/awslabs
Participe do AWS User Group Campinas!!
sensedia.com
flavio@pimenta.dev
github.com/flap
Flávio Pimenta

Developer Lounge - AWS Summit SP 2019 - Processando alta demanda de Requisições