SlideShare uma empresa Scribd logo
Erros que cometemos
na arquitetura de
microserviços e a
evolução para Containers
Especialistas em Retenção
BRUNO ANDRADE ALVES
“Empreender é saltar de paraquedas
e costurá-lo durante a queda"
A Dito começou construindo aplicativos
para Orkut e depois para o Facebook.
“Ingressos para o Rock in Rio
se esgotam em menos de 15 minutos"
“Maior rede especializada
em óculos escuros e acessórios 

da América latina"
“TIM, vice-líder do setor de telefonia
com mais de 44 mihões de pessoas”
UM TIME DE FERAs
FAZEDOR
ÉTICA
RESULTADOS
ALEGRIA e APRENDER
F
E
R
A
VOLTANDO AO COMEÇO DE 2012
SERVIÇOS
Analytics Badge Ranking Login
GMEvent Share
Dashboard
Analytics Badge Ranking Login GM
MySQL Redis MySQL
Apenas o 

Analytics acessa 

o BANCO da 

plataforma
Apenas os 

módulos da
plataforma
acessam o
Redis
O GM
acessa seu
próprio
BANCO
Todos os módulos da plataforma
comunicam com o Analytics, e da mesma forma o
Analytics se comunica com todos
os módulos da plataforma
Apenas o
Social Share
Comunica com
o GM
O GM se
comunica
apenas com o
Social Share
SERVIÇOS
Event Share
Dashboard
Todos os módulos da plataforma
comunicam com o Dashboard. O Dashboard também se
comunica com os eles
ARQUITETURA NO AR
PROBLEMAS = 0
ARQUITETURA NO AR
PROBLEMÔMETRO
Usuários
Eventos
Analytics
Alto Acoplamento
1
Envia para indexação
Cria evento
de login
Envia para
indexação
Fluxo de criação de usuários
Usuários
Eventos
Analytics
Alto Acoplamento
2
Envia para indexação - Lentidão
Cria evento
de login

Lentidão
Envia para
indexação
Lentidão
Fluxo de criação de usuários
Lentidão
Lentidão na comunicação entre módulos
Alto Acoplamento
Lentidão na comunicação entre módulos
3
Usuários
Eventos
Analytics
Envia para indexação - Erro
Cria evento
de login
Envia para
indexação
Fluxo de criação de usuários
Dependência para
criação de eventos
Criação de estados
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
4
Serviços com muitas regras de negócio
DASH Login
Event
Badge Ranking
GM Share
Notification Referal
5
Analytics
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
6
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
7
MySQL
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Amigo, você sabe me
dizer onde podemos
salvar os dados desse
novo serviço?
Rapaz,
Salva no Redis
Ipiranga!
8
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
9
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
10
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
11
Analytics Badge
Ranking Login GM
MySQL Redis MySQL
Apenas o 

Analytics acessa 

o BANCO da 

plataforma
Apenas os 

módulos da
plataforma
acessam o
Redis
O GM
acessa seu
próprio
BANCO
Todos os módulos da plataforma
comunicam com o Analytics, e da mesma forma o Analytics se
comunica com todos
os módulos da plataforma
Apenas o
Social Share
Comunica com
o GM
O GM se comunica
apenas com o
Social Share
Event Share
Dashboard
Todos os módulos da plataforma
comunicam com o Dashboard. O Dashboard também se comunica
com os eles
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
12
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
13
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
14
Analytics
Usuários
MySQL Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
ARQUITETURA PERFEITA
"Applications built from microservices
aim to be as decoupled and
as cohesive as possible"
Martin Fowler
ARQUITETURA PERFEITA
"Set of very small, granular, independent
collaborating services."
Benjamin Wooton
Microservices - Not A Free Lunch
Fonte: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
- Substantial DevOps Skills Required
- Distributed System Complexity
- It can be difficult to recreate environments 

in a consistent way for either manual or automated testing.
15
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
14
Containerização dos serviços
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
12
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
10
DASH Login
Search Apps
Analytics Badge
sAnalytics CC
GM Share
Referral AUTH
Event
API
Ranking
Hooks
Notification
Stats
Micro serviços
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
8
DASH Login
Search Apps
Analytics Badge
sAnalytics CC
GM Share
Referral AUTH
Event
API
Ranking
Hooks
Notification
Stats
Micro serviços
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
3
DASH Login
Search Apps
Analytics Badge
sAnalytics CC
GM Share
Referral AUTH
Event
API
Ranking
Hooks
Notification
Stats
Micro serviços
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
2
DASH Login
Analytics Badge
Event
Ranking
Micro serviços
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
2
Bibliotecas em 10 linguagens

C, C++, Java, Go, Node.js, Python, Ruby, Objective-C, PHP e C#.


Feita para ser o padrão do google
Alta performance Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
1
gRPC
Testes no Google Cloud Pub/Sub
0
30
60
90
120
0
7,5
15
22,5
30
gRPC HTTP1.1/JSON
Throughput 3x maior
Throughput (MB/s) per CPU
gRPC HTTP1.1/JSON
Throughput (MB/s)
Gasto de CPU 11x menor
JSON/HTTPVS
Fonte: https://cloud.google.com/blog/big-data/2016/03/announcing-grpc-alpha-for-google-cloud-pubsub
STEAM DE DADOS
PUB
Users Service
Events Service
Search Service
Certs Service
Monitoring Service
Analytics 

Service
Notification 

Service
Facebook
service
Android Service
iOS 

Service
Email 

Service
SMS Service
SUB
Add-ons
Alto Acoplamento
Lentidão na comunicação entre módulos
Criação de estados
Serviços com muitas regras de negócio
Módulos morrem, código legado não
Difícil atualização de bibliotecas
Crescimento sem fim do banco relacional
Elevado consumo de memória
Difícil limpar dados não utilizados
Difícil identificar origem de Slow Queries
Dificuldade de Onboarding de novos Devs
Equipe enxuta
Dificuldade de gerenciar diversos serviços
Desenvolvimento duplicado
Quebra de paradigmas
0
OBRIGADO!
Especialistas em Retenção
BRUNO ANDRADE ALVES
bruno@dito.com.br
www.dito.com.br
facebook.com/ditointernet

Mais conteúdo relacionado

Semelhante a Erros que cometemos na arquitetura de micro-serviços e a evolução para Containers

Colaborando por meio da web 2.0
Colaborando por meio da web 2.0Colaborando por meio da web 2.0
Colaborando por meio da web 2.0Gustavo Concon
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...tdc-globalcode
 
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.Carlos Smaniotto
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções Edgar Silva
 
Internet, intranet, extranet
Internet, intranet, extranetInternet, intranet, extranet
Internet, intranet, extranetPricila Yessayan
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Gerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalGerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalDynatrace Latin America
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosFábio Rosato
 
Software-As-A-Service: O que Google sabe que todos nós precisamos saber?
Software-As-A-Service:O que Google sabe que todos nós precisamos saber?Software-As-A-Service:O que Google sabe que todos nós precisamos saber?
Software-As-A-Service: O que Google sabe que todos nós precisamos saber?elliando dias
 

Semelhante a Erros que cometemos na arquitetura de micro-serviços e a evolução para Containers (20)

Colaborando por meio da web 2.0
Colaborando por meio da web 2.0Colaborando por meio da web 2.0
Colaborando por meio da web 2.0
 
Sql01 final
Sql01 finalSql01 final
Sql01 final
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
Blockchain Day RJ
Blockchain Day RJBlockchain Day RJ
Blockchain Day RJ
 
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
 
ApresentaçAo Joomla
ApresentaçAo JoomlaApresentaçAo Joomla
ApresentaçAo Joomla
 
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções
 
Internet, intranet, extranet
Internet, intranet, extranetInternet, intranet, extranet
Internet, intranet, extranet
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Gerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalGerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance Digital
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travados
 
Software-As-A-Service: O que Google sabe que todos nós precisamos saber?
Software-As-A-Service:O que Google sabe que todos nós precisamos saber?Software-As-A-Service:O que Google sabe que todos nós precisamos saber?
Software-As-A-Service: O que Google sabe que todos nós precisamos saber?
 
Webinar Portal Colaborativo
Webinar Portal ColaborativoWebinar Portal Colaborativo
Webinar Portal Colaborativo
 
MySQL e Big Data
MySQL e Big DataMySQL e Big Data
MySQL e Big Data
 

Erros que cometemos na arquitetura de micro-serviços e a evolução para Containers

  • 1. Erros que cometemos na arquitetura de microserviços e a evolução para Containers Especialistas em Retenção BRUNO ANDRADE ALVES
  • 2. “Empreender é saltar de paraquedas e costurá-lo durante a queda"
  • 3. A Dito começou construindo aplicativos para Orkut e depois para o Facebook.
  • 4.
  • 5. “Ingressos para o Rock in Rio se esgotam em menos de 15 minutos" “Maior rede especializada em óculos escuros e acessórios 
 da América latina" “TIM, vice-líder do setor de telefonia com mais de 44 mihões de pessoas”
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. UM TIME DE FERAs FAZEDOR ÉTICA RESULTADOS ALEGRIA e APRENDER F E R A
  • 11.
  • 13. SERVIÇOS Analytics Badge Ranking Login GMEvent Share Dashboard
  • 14. Analytics Badge Ranking Login GM MySQL Redis MySQL Apenas o 
 Analytics acessa 
 o BANCO da 
 plataforma Apenas os 
 módulos da plataforma acessam o Redis O GM acessa seu próprio BANCO Todos os módulos da plataforma comunicam com o Analytics, e da mesma forma o Analytics se comunica com todos os módulos da plataforma Apenas o Social Share Comunica com o GM O GM se comunica apenas com o Social Share SERVIÇOS Event Share Dashboard Todos os módulos da plataforma comunicam com o Dashboard. O Dashboard também se comunica com os eles
  • 19. Usuários Eventos Analytics Alto Acoplamento 1 Envia para indexação Cria evento de login Envia para indexação Fluxo de criação de usuários
  • 20. Usuários Eventos Analytics Alto Acoplamento 2 Envia para indexação - Lentidão Cria evento de login
 Lentidão Envia para indexação Lentidão Fluxo de criação de usuários Lentidão Lentidão na comunicação entre módulos
  • 21. Alto Acoplamento Lentidão na comunicação entre módulos 3 Usuários Eventos Analytics Envia para indexação - Erro Cria evento de login Envia para indexação Fluxo de criação de usuários Dependência para criação de eventos Criação de estados
  • 22. Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados 4 Serviços com muitas regras de negócio
  • 23. DASH Login Event Badge Ranking GM Share Notification Referal 5 Analytics Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não
  • 24. 6 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas
  • 25. 7 MySQL Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional
  • 26. Amigo, você sabe me dizer onde podemos salvar os dados desse novo serviço? Rapaz, Salva no Redis Ipiranga!
  • 27. 8 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória
  • 28. 9 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados
  • 29. 10 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries
  • 30. 11 Analytics Badge Ranking Login GM MySQL Redis MySQL Apenas o 
 Analytics acessa 
 o BANCO da 
 plataforma Apenas os 
 módulos da plataforma acessam o Redis O GM acessa seu próprio BANCO Todos os módulos da plataforma comunicam com o Analytics, e da mesma forma o Analytics se comunica com todos os módulos da plataforma Apenas o Social Share Comunica com o GM O GM se comunica apenas com o Social Share Event Share Dashboard Todos os módulos da plataforma comunicam com o Dashboard. O Dashboard também se comunica com os eles Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs
  • 31. 12 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta
  • 32. 13 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços
  • 33. 14 Analytics Usuários MySQL Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado
  • 34. ARQUITETURA PERFEITA "Applications built from microservices aim to be as decoupled and as cohesive as possible" Martin Fowler
  • 35. ARQUITETURA PERFEITA "Set of very small, granular, independent collaborating services." Benjamin Wooton
  • 36. Microservices - Not A Free Lunch Fonte: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html - Substantial DevOps Skills Required - Distributed System Complexity - It can be difficult to recreate environments 
 in a consistent way for either manual or automated testing.
  • 37.
  • 38. 15 Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas
  • 39. Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 14
  • 40. Containerização dos serviços Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 12
  • 41. Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 10
  • 42. DASH Login Search Apps Analytics Badge sAnalytics CC GM Share Referral AUTH Event API Ranking Hooks Notification Stats Micro serviços Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 8
  • 43. DASH Login Search Apps Analytics Badge sAnalytics CC GM Share Referral AUTH Event API Ranking Hooks Notification Stats Micro serviços Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 3
  • 44. DASH Login Search Apps Analytics Badge sAnalytics CC GM Share Referral AUTH Event API Ranking Hooks Notification Stats Micro serviços Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 2
  • 45. DASH Login Analytics Badge Event Ranking Micro serviços Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 2
  • 46. Bibliotecas em 10 linguagens
 C, C++, Java, Go, Node.js, Python, Ruby, Objective-C, PHP e C#. 
 Feita para ser o padrão do google Alta performance Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 1
  • 47. gRPC Testes no Google Cloud Pub/Sub 0 30 60 90 120 0 7,5 15 22,5 30 gRPC HTTP1.1/JSON Throughput 3x maior Throughput (MB/s) per CPU gRPC HTTP1.1/JSON Throughput (MB/s) Gasto de CPU 11x menor JSON/HTTPVS Fonte: https://cloud.google.com/blog/big-data/2016/03/announcing-grpc-alpha-for-google-cloud-pubsub
  • 48. STEAM DE DADOS PUB Users Service Events Service Search Service Certs Service Monitoring Service Analytics 
 Service Notification 
 Service Facebook service Android Service iOS 
 Service Email 
 Service SMS Service SUB Add-ons Alto Acoplamento Lentidão na comunicação entre módulos Criação de estados Serviços com muitas regras de negócio Módulos morrem, código legado não Difícil atualização de bibliotecas Crescimento sem fim do banco relacional Elevado consumo de memória Difícil limpar dados não utilizados Difícil identificar origem de Slow Queries Dificuldade de Onboarding de novos Devs Equipe enxuta Dificuldade de gerenciar diversos serviços Desenvolvimento duplicado Quebra de paradigmas 0
  • 49.
  • 50. OBRIGADO! Especialistas em Retenção BRUNO ANDRADE ALVES bruno@dito.com.br www.dito.com.br facebook.com/ditointernet