Uma abordagem pragmática à arquitetura lambda
-
Upload
diego-rocha -
Category
Software
-
view
184 -
download
1
Transcript of Uma abordagem pragmática à arquitetura lambda
![Page 1: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/1.jpg)
Uma abordagem pragmática à Arquitetura Lambda
Diego RochaFull Stack developer
at
![Page 2: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/2.jpg)
kiwi - Mobile backend as service
![Page 3: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/3.jpg)
kiwi - Desafios
100M+ de eventos/diaTempo real Baixo custo
processamento de métricas
![Page 4: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/4.jpg)
Solução?
Arquitetura Lambda
![Page 5: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/5.jpg)
Arquitetura LambdaHow to beat the CAP theorem - Nathan Marz
- Criador do Storm- Ex-engenheiro @ Twitter
![Page 6: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/6.jpg)
Arquitetura Lambda
Dados
Realtime
Batch
View
![Page 7: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/7.jpg)
Arquitetura Lambda
Dados
Realtime
Batch
View
Ad-hoc query
Predefined query
![Page 8: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/8.jpg)
Arquitetura Lambda
Dados
Realtime
Batch
View
![Page 9: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/9.jpg)
Realtime + BatchDois sistemas bem diferentes que devem gerar os mesmos resultados
![Page 10: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/10.jpg)
Realtime + BatchDois sistemas bem diferentes que devem gerar os mesmos resultadosDicas:
- Os faça falar a mesma “Língua” (veja o projeto twitter Algebird/Summingbird)- Utilize os mesmos casos de teste para ambos
![Page 11: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/11.jpg)
Batch layerRelativamente fácil de implementar
Quase todas as soluções de big data são em batch
![Page 12: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/12.jpg)
Batch layerRelativamente fácil de implementar
Quase todas as soluções de big data são em batch
![Page 13: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/13.jpg)
Realtime layerDifícil de fazer bem
Problemas:
- Garantia de processamento- Ordem de processamento- Baixa latência
![Page 14: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/14.jpg)
Realtime layerGarantia de processamento
O que fazer quando não sei se o processamento ocorreu bem?
- At most once- At least once- Exactly once
![Page 15: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/15.jpg)
Realtime layerGarantia de processamento
O que fazer quando não sei se o processamento ocorreu bem?
- At most once (fácil)- At least once (não tão fácil)- Exactly once (pode não valer a pena)
![Page 16: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/16.jpg)
Realtime layerGarantia de processamento
O que fazer quando não sei se o processamento ocorreu bem?
- At most once- At least once- Exactly once
Idempotência pode te salvar
![Page 17: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/17.jpg)
Realtime layerOrdem de processamentoQ.: Preciso que meus dados sejam processados na ordem em que são produzidos. E agora?
R.: Direcione dados interdependentes sempre para a mesma instância de de processamento.
![Page 18: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/18.jpg)
Realtime layerOrdem de processamentoQ.: Preciso que meus dados sejam processados na ordem em que são produzidos. E agora?
R.: Direcione dados interdependentes sempre para a mesma instância de de processamento.
DadosWorker
Worker
Worker
![Page 19: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/19.jpg)
Realtime layerBaixa LatênciaProdução de dados não pode ser maior que o consumo
- Controle de fluxo e Backpressure (sobrevivência a picos)
![Page 20: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/20.jpg)
Realtime layerBaixa LatênciaProdução de dados não pode ser maior que o consumo
- Controle de fluxo e Backpressure (sobrevivência a picos)- Processamento isolado
![Page 21: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/21.jpg)
Realtime layerBaixa LatênciaProdução de dados não pode ser maior que o consumo
- Controle de fluxo e Backpressure (sobrevivência a picos)- Processamento isolado- Cuidado com serviços externos (banco de dados, aplicações etc)
- Chamadas assíncronas- Micro-batching
![Page 22: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/22.jpg)
Dica finalMonitore!
- Te permite saber quando a infraestrutura deve ser escalada- Identificar quando erros foram introduzidos e onde
![Page 23: Uma abordagem pragmática à arquitetura lambda](https://reader030.fdocument.pub/reader030/viewer/2022020203/58ed95971a28abd21e8b464f/html5/thumbnails/23.jpg)
perguntas?