uma abordagem pragmática à arquitetura lambda

23
Uma abordagem pragmática à Arquitetura Lambda Diego Rocha Full Stack developer at

Upload: diego-rocha

Post on 12-Apr-2017

191 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Uma abordagem pragmática à arquitetura lambda

Uma abordagem pragmática à Arquitetura Lambda

Diego RochaFull Stack developer

at

Page 2: Uma abordagem pragmática à arquitetura lambda

kiwi - Mobile backend as service

Page 3: Uma abordagem pragmática à arquitetura lambda

kiwi - Desafios

100M+ de eventos/diaTempo real Baixo custo

processamento de métricas

Page 4: Uma abordagem pragmática à arquitetura lambda

Solução?

Arquitetura Lambda

Page 5: Uma abordagem pragmática à arquitetura lambda

Arquitetura LambdaHow to beat the CAP theorem - Nathan Marz

- Criador do Storm- Ex-engenheiro @ Twitter

Page 6: Uma abordagem pragmática à arquitetura lambda

Arquitetura Lambda

Dados

Realtime

Batch

View

Page 7: Uma abordagem pragmática à arquitetura lambda

Arquitetura Lambda

Dados

Realtime

Batch

View

Ad-hoc query

Predefined query

Page 8: Uma abordagem pragmática à arquitetura lambda

Arquitetura Lambda

Dados

Realtime

Batch

View

Page 9: Uma abordagem pragmática à arquitetura lambda

Realtime + BatchDois sistemas bem diferentes que devem gerar os mesmos resultados

Page 10: Uma abordagem pragmática à arquitetura lambda

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

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

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

Realtime layerDifícil de fazer bem

Problemas:

- Garantia de processamento- Ordem de processamento- Baixa latência

Page 14: Uma abordagem pragmática à arquitetura lambda

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

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

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

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

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

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

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

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

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

perguntas?