uma abordagem pragmática à arquitetura lambda
TRANSCRIPT
Uma abordagem pragmática à Arquitetura Lambda
Diego RochaFull Stack developer
at
kiwi - Mobile backend as service
kiwi - Desafios
100M+ de eventos/diaTempo real Baixo custo
processamento de métricas
Solução?
Arquitetura Lambda
Arquitetura LambdaHow to beat the CAP theorem - Nathan Marz
- Criador do Storm- Ex-engenheiro @ Twitter
Arquitetura Lambda
Dados
Realtime
Batch
View
Arquitetura Lambda
Dados
Realtime
Batch
View
Ad-hoc query
Predefined query
Arquitetura Lambda
Dados
Realtime
Batch
View
Realtime + BatchDois sistemas bem diferentes que devem gerar os mesmos resultados
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
Batch layerRelativamente fácil de implementar
Quase todas as soluções de big data são em batch
Batch layerRelativamente fácil de implementar
Quase todas as soluções de big data são em batch
Realtime layerDifícil de fazer bem
Problemas:
- Garantia de processamento- Ordem de processamento- Baixa latência
Realtime layerGarantia de processamento
O que fazer quando não sei se o processamento ocorreu bem?
- At most once- At least once- Exactly once
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)
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
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.
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
Realtime layerBaixa LatênciaProdução de dados não pode ser maior que o consumo
- Controle de fluxo e Backpressure (sobrevivência a picos)
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
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
Dica finalMonitore!
- Te permite saber quando a infraestrutura deve ser escalada- Identificar quando erros foram introduzidos e onde
perguntas?