SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Umaabordagempragmáticaà
ArquiteturaLambda
DiegoRocha
FullStackdeveloper
at
kiwi-Mobilebackendasservice
kiwi-Desafios
100M+deeventos/dia
Temporeal Baixocusto
processamentodemétricas
Solução?
ArquiteturaLambda
ArquiteturaLambda
HowtobeattheCAPtheorem-NathanMarz
- CriadordoStorm
- Ex-engenheiro@Twitter
ArquiteturaLambda
Dados
Realtime
Batch
View
ArquiteturaLambda
Dados
Realtime
Batch
View
Ad-hocquery
Predefinedquery
ArquiteturaLambda
Dados
Realtime
Batch
View
Realtime+Batch
Doissistemasbemdiferentesquedevemgerarosmesmosresultados
Realtime+Batch
Doissistemasbemdiferentesquedevemgerarosmesmosresultados
Dicas:
- Osfaçafalaramesma“Língua”(vejaoprojetotwitterAlgebird/Summingbird)
- Utilizeosmesmoscasosdetesteparaambos
Batchlayer
Relativamentefácildeimplementar
Quasetodasassoluçõesdebigdatasãoembatch
Batchlayer
Relativamentefácildeimplementar
Quasetodasassoluçõesdebigdatasãoembatch
Realtimelayer
Difícildefazerbem
Problemas:
- Garantiadeprocessamento
- Ordemdeprocessamento
- Baixalatência
Realtimelayer
Garantiadeprocessamento
Oquefazerquandonãoseiseoprocessamentoocorreubem?
- Atmostonce
- Atleastonce
- Exactlyonce
Realtimelayer
Garantiadeprocessamento
Oquefazerquandonãoseiseoprocessamentoocorreubem?
- Atmostonce(fácil)
- Atleastonce(nãotãofácil)
- Exactlyonce(podenãovalerapena)
Realtimelayer
Garantiadeprocessamento
Oquefazerquandonãoseiseoprocessamentoocorreubem?
- Atmostonce
- Atleastonce
- Exactlyonce
Idempotênciapodetesalvar
Realtimelayer
Ordemdeprocessamento
Q.:Precisoquemeusdadossejamprocessadosnaordememquesãoproduzidos.Eagora?
R.:Direcionedadosinterdependentessempreparaamesmainstânciadedeprocessamento.
Realtimelayer
Ordemdeprocessamento
Q.:Precisoquemeusdadossejamprocessadosnaordememquesãoproduzidos.Eagora?
R.:Direcionedadosinterdependentessempreparaamesmainstânciadedeprocessamento.
Dados
Worker
Worker
Worker
Realtimelayer
BaixaLatência
Produçãodedadosnãopodesermaiorqueoconsumo
- ControledefluxoeBackpressure(sobrevivênciaapicos)
Realtimelayer
BaixaLatência
Produçãodedadosnãopodesermaiorqueoconsumo
- ControledefluxoeBackpressure(sobrevivênciaapicos)
- Processamentoisolado
Realtimelayer
BaixaLatência
Produçãodedadosnãopodesermaiorqueoconsumo
- ControledefluxoeBackpressure(sobrevivênciaapicos)
- Processamentoisolado
- Cuidadocomserviçosexternos(bancodedados,aplicaçõesetc)
- Chamadasassíncronas
- Micro-batching
Dicafinal
Monitore!
- Tepermitesaberquandoainfraestruturadeveserescalada
- Identificarquandoerrosforamintroduzidoseonde
perguntas?

Mais conteúdo relacionado

Semelhante a Uma abordagem pragmática à arquitetura lambda

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenhariabruno2003sp
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeRafael Ponte
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensMarco Antonio Maciel
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerRails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerGeorge Guimarães
 
Programador (front|back) end moderno, por Leonardo Hackin
Programador (front|back) end moderno, por Leonardo HackinProgramador (front|back) end moderno, por Leonardo Hackin
Programador (front|back) end moderno, por Leonardo HackiniMasters
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaIvayr Farah Netto
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Thiago Rondon
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?David Ruiz
 
Containers, Kubernetes e porque estamos falando tanto disso…
Containers, Kubernetes e porque estamos falando tanto disso…Containers, Kubernetes e porque estamos falando tanto disso…
Containers, Kubernetes e porque estamos falando tanto disso…Paulo Lacerda
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
Hackers Pensando
Hackers PensandoHackers Pensando
Hackers Pensandorenanturrm
 

Semelhante a Uma abordagem pragmática à arquitetura lambda (20)

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenharia
 
JavaME
JavaMEJavaME
JavaME
 
Arquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do HypeArquitetura Java - Escalando além do Hype
Arquitetura Java - Escalando além do Hype
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas Nuvens
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - PagestackerRails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
 
02 introducao pre_impressao
02 introducao pre_impressao02 introducao pre_impressao
02 introducao pre_impressao
 
Ppt ww vale
Ppt ww valePpt ww vale
Ppt ww vale
 
Git e redmine
Git e redmineGit e redmine
Git e redmine
 
Programador (front|back) end moderno, por Leonardo Hackin
Programador (front|back) end moderno, por Leonardo HackinProgramador (front|back) end moderno, por Leonardo Hackin
Programador (front|back) end moderno, por Leonardo Hackin
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?
 
Containers, Kubernetes e porque estamos falando tanto disso…
Containers, Kubernetes e porque estamos falando tanto disso…Containers, Kubernetes e porque estamos falando tanto disso…
Containers, Kubernetes e porque estamos falando tanto disso…
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
Hackers Pensando
Hackers PensandoHackers Pensando
Hackers Pensando
 

Uma abordagem pragmática à arquitetura lambda