O documento discute os problemas de arquitetura de microserviços e a evolução para containers, incluindo alto acoplamento, lentidão na comunicação entre serviços e dificuldade de gerenciamento.
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
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
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
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