SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
Acelerando
Sistemas
Distribuídos
@johalf
e
@spiceee
#

onrails
SOA
Sistema
Distribuído
“Um sistema distribuído
consiste em múltiplas
aplicações autônomas
que interagem para
atingir uma meta comum”
“Um sistema distribuído
consiste em múltiplas
aplicações autônomas
que interagem para
atingir uma meta comum”
Wolfgang Emmerich
“Afirmar que um sistema
distribuído funciona com
uma meta comum num
ambiente aberto como a
Internet é algo difícil.”
“Afirmar que um sistema
distribuído funciona com
uma meta comum num
ambiente aberto como a
Internet é algo difícil.”
Roy Fielding
Por que sistema
distribuído?
Prós
Desacoplamento
Desacoplamento
de responsabilidade, de domínio, de
arquitetura, de classes, de código
Db não é API
Db não é API
difícil manter contratos e regras de negócio
Escalabilidade
Disponibilidade
Performance
Custo
Contras
Logs
Testes
Deploy
Granularidade
Versionamento
Segurança/Auth
ENV=development
Latência
Complexidade
Arquitetura
distribuída do iba
Toolbox
+
Resque
“why so
slow?”
“why so
slow?”
The Armin
custo do REST
Granularidade
(again)
Filters, group-bys
Meta comum?
“Faster, faster,
faster, now!”
“Faster, faster,
faster, now!”
The Armin
Cacheia tudo!
“Need more
memcache!”
“Need more
memcache!”
The Armin
Varnish + ETag +
fragment caching
Invalidação de
cache = uma das
coisas mais
difíceis blah blah
Difícil customizar
por usuário
Rethink
API
API
Eager loading de entidades que compoem
uma unidade de informação
API
API
O cliente escolhe o nível de detalhes que
precisa
Um passo para
trás: unificar
alguns serviços
Um passo para
trás: unificar
alguns serviços
Analisamos serviços que poderiam ser
acoplados sem grande impacto à plataforma
Preconsume
Preconsume
Colocar a informação numa camada de custo
mais baixo de obtenção
App Server
App Server
Buscar um app server que se adaptasse
melhor ao nosso stack
CAB: Cache
Against Boiada
CAB: Cache
Against Boiada
separando o tipo de cache pelo tipo de
usuário
“Venha me ler
todinha no iba”
Um só framework
Um só framework
Mais de um framework num sistema
distribuído requer mais manutenção
Eliminar concorrência
entre Back-Office e
User-facing
Eliminar concorrência
entre Back-Office e
User-facing
o usuário querendo comprar um livro não
precisa sofrer com um processo de
faturamento
Async?
Async?
Começar a explorar non-blocking app stacks
“Ah! Joga tudo
no Redis”
“Cache vai nos
salvar”
O MongoDB é foda!
Mas depois ele cobra
a conta.
Modelagem
errada
Conclusão
Perguntas?
Free Stuff
Obrigado!

Mais conteúdo relacionado

Semelhante a Acelerando Sistemas Distribuídos

Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosDextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosLeandro Guimarães
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviçosRaphael Almeida
 
Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosDextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosDextra
 
Enteprise Integration Patterns
Enteprise Integration PatternsEnteprise Integration Patterns
Enteprise Integration PatternsAlessandro Kieras
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDomingos Teruel
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!Camilla Gomes
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsWildtech
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linuxaviram
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDomingos Teruel
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDesenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDomingos Teruel
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Como criar seu próprio Framework
Como criar seu próprio FrameworkComo criar seu próprio Framework
Como criar seu próprio FrameworkHiarison Gigante
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
Modelo osi da iso semana5 slide
Modelo osi da iso semana5 slideModelo osi da iso semana5 slide
Modelo osi da iso semana5 slidedanthon
 

Semelhante a Acelerando Sistemas Distribuídos (20)

Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosDextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas DistribuídosDextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
Dextra Sistemas - SeEMTec 2012 - Sistemas Distribuídos
 
Enteprise Integration Patterns
Enteprise Integration PatternsEnteprise Integration Patterns
Enteprise Integration Patterns
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User InterfaceDesenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
Desenvolvendo aplicações PHP, AJAX e YUI! Yahoo User Interface
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Como criar seu próprio Framework
Como criar seu próprio FrameworkComo criar seu próprio Framework
Como criar seu próprio Framework
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Computação em Nuvem com Microsoft Azure
Computação em Nuvem com Microsoft AzureComputação em Nuvem com Microsoft Azure
Computação em Nuvem com Microsoft Azure
 
Modelo osi da iso semana5 slide
Modelo osi da iso semana5 slideModelo osi da iso semana5 slide
Modelo osi da iso semana5 slide
 

Acelerando Sistemas Distribuídos