uma abordagem pragmática à arquitetura lambda

Post on 12-Apr-2017

193 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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?

top related