SlideShare a Scribd company logo
1 of 37
Qual o tamanho
adequado de um micro
serviço?
Rafael Salerno de Oliveira
• Solution Architect na HypeFlame/Agibank
• Mais de 15 anos em Desenvolvimento de Software
• Últimos 5 anos trabalhando com ferramentas de Devops/Cloud/
Arquitetura de Micro Services
• Entusiasta
• TDD,DDD, linguagens funcionais
• XP, métodos ágeis
• Arquitetura Evolucionária
https://www.linkedin.com/in/rafael-salerno-de-oliveira-a8551b23/
Apresentação
Case Agibank/HypeFlame
Qual o tamanho adequado de um micro
serviço?
Aprendizado que tivemos reconstruindo a arquitetura de um
banco.
• Core banking
• CRM
• Cadastro central de pessoas
• Infraestrutura de componentes (Kubernetes/AWS)
• Apenas .Net mais linguagens Java/Python/Scala/NodeJs
• Cultura
• Nós trabalhamos desde 2017 com cerca de 80% da arquitetura baseada em
micro serviços.
• Hoje temos cerca de 800 micro serviços
• 200 Bancos de Dados (Relacionais e Não relacionais)
• Fazemos media de 1200 deploys por mês / média de 40 por dia
• Temos cerca de 35 time de desenvolvimento (Squads)
• Muito testes automatizado ....
• Muitas Soluções e muitos problemas ......
Cenário Atual 2021
até 2016 ....
Tínhamos uma arquitetura monolítica
Cada deploy era um evento, com muita sorte 4 por mês
Poucos testes automatizados
Times alocados o final de semana todo testando e realizando ajustes
Como começamos
Em 2017 ....
Com o objetivo de escalar agressivamente o Business.
Criamos um time de Arquitetura e trouxemos /apresentamos um novo
padrão e novas tecnologias como:
• Micro Serviços
• Kubernetes
• API Gateway
• Cloud
• CI/CD
• Monitoramento
• Treacebility
• Log Centralizado
• Kafka/Rabbitmq
• Diversidade de linguagens
• Testes Unitários / Contrato/ Outros (de forma obrigatória)
• Times organizados por Business
Quando tudo mudou
Porem ....
Fomos tentados pelo purismo da arquitetura de micro serviços
500 micro serviços 300 bancos de dados em questão de menos de 1 ano
15 times, 20% da nova arquitetura
O tempo nos ensinou que alguns caminhos escolhidos na arquitetura de micro
serviços não são tão bons assim, ao menos para a nossa realidade.
Logo...
Com o passar do tempo vieram alguns problemas, como:
• Custo
• Rastreabilidade/ Bugs complexos
• Escalabilidade
• Manutenibilidade
• Qualidade dos Testes
Problemas...
• 500 Micro serviços
- 1gb, 512mb, 256mb por serviço
- 1 vCPU
- Quantas maquinas precisamos?
• 1 Semana 1tb de logs
• alguns monolito (ferramentas de terceiros/outros mal projetados)
• Banco de Dados (muitos)
• Tudo isso na AWS
• Custo por manter isso ligado 24/7 passou a ser fixo
• Número de pessoas para manutenção precisou crescer arquitetos,
Infraestrutura, Segurança, Desenvolvedores, etc…
OBS: Impacto de uma decisão de arquitetura
Custo
500 micro serviços
300 bancos de dados
Exigem maior maturidade para rastreabilidade
- Ferramentas
- Expertise
Em pouco tempo tínhamos poucas pessoas que conseguia fazer um
throubleshooting completo
Rastreabilidade
Imaginamos então um cenário onde o usuário fez login no seu
aplicativo e essa única chamada, se desencadeou em 10 ou 20
apenas para uma operação.
Rastreabilidade
Quando tivermos um problema teremos 10, 20 possíveis lugares de pontos de falha.
Imaginamos então um cenário onde o usuário fez login no seu
aplicativo e essa única chamada, se desencadeou em 10 ou 20
apenas para uma operação.
Rastreabilidade
Quando tivermos um problema teremos 10, 20 possíveis lugares de pontos de falha.
Rastreabilidade
Service Health
Com esses mesmos:
- 500 micro serviços
- 300 bancos de dados
De nada adianta escalar alguns serviços e outros
não
Fazer tunning de alguns bancos outros não
Escalabilidade
Uma coisa era escalar Monolito outra é micro serviços
A escalabilidade em um ambiente tão segmentado e granular pode
virar um problema.
Mesmo cenário:
• Um usuário executando uma operação em seu aplicativo,
• Operação que desencadeia 10 ou 20 chamadas de micro serviços
Maior parte deles deve subir horizontalmente
• Bancos de dados também deve estar preparados para esse
volume, que pode ser sazonal ou definitivo.
O pool de conexões deve subir também para receber esses novos
serviços que estão subindo.
Ou estar preparados para esses volume.
Escalabilidade
Escalabilidade
• Um time tinha 10 a 20 serviços, muito pequenos
• 1 Feature precisava commit em quase todos
• Mesmo dev fazia 10 commits em 10 serviços
• Monolito distribuido
Manutenibilidade
Manutenibilidade
Apenas testes unitários com 90% de cobertura não é o
suficiente
Precisa de um testes mais abrangente
Alguém precisa testar com visão mais ampla
Performance de 1 serviço pode desencadear um problema
generalizado, assim como um banco com performance
Qualidade de Testes
Qualidade dos Testes
Após algum tempo nesse cenário que passou a ser frequente, chegou a hora de
parar e analisar o cenário atual.
A empresa crescendo, novos clientes, ações de marketing frequentes…
Seguir assim poderia ser cada vez mais problemático para um futuro sustentável
Então...
Esse pontos de problemas que nos fizeram pensar e dar alguns passos atrás
Continuar com arquitetura de micro serviços era uma premissa
Os benefícios dos micros serviços é uma questão indiscutível, já que favoreceu um
crescimento de negócio, técnico, agilidade, escalabilidade, desacoplamento, entre
outros.
As entregas de demandas independência dos times era boa comparada ao
passado
Então...
O Que a História da Software conta?
Paramos então para avaliar o que algumas empresas estão fazendo nesse sentido, o que a história do
mudo de software tem para nos contar.
O Que a História da Software conta?
Passo Atrás
Como passamos a pensar...
Daremos então esse “passo atrás” e pensamos agora em domínio DDD.
Palavra chave desse passo, pensando em domínio começamos a ver que
antes de criar novos serviços, precisamos pensar:
• A qual domínio ele pertence?
• Esse domínio que ele pertence está bem conceituado?
• Podemos agrupar domínios pequenos com o Core Domain?
Como passamos a pensar...
Geralmente nos concentramos apenas no Tactical (mais próximas do código)
Como passamos a pensar...
Como passamos a pensar...
Passo Atrás
Definindo o domínio alguns problemas passaram a ser resolvidos.
A quantidade de micro serviços passou a cair, a manutenção passou a fazer
mais simples, a escalabilidade passou a ser mais objetiva, quando ocorria erro
eram menos lugares para se verificar logs.
Testes passaram agora a fazer mais sentido, um teste unitário de fato estava
testando código de negócio.
Testes de performance e integrações passaram a ser mais simples de analisar.
Passo Atrás
Se considerarmos que um serviço deveria iniciar como:
• um monolito, porém modularizado, com domínio bem definido
• Levando alguns conceitos de DDD como Bounded Contexts
• Design by Contract
os micro serviços parecem estar mais adequados para uma futura
segmentação.
Isso leva tempo....
E qual o Tamanho ideal?
O Mais certo é depende:
• da empresa
• do business
• Qual a maturidade que tem a empresa ? Ferramentas? Cultura? Profissionais?
• Qual o Business?
Mas o que podemos considerar e que nos traz perto da idealidade é o DDD.
Pensar no seu domínio, pois é ele que faz com que as coisas façam
sentido e tragam o que realmente importa.
Domain-Oriented Microservices Architecture - DOMA
https://eng.uber.com/microservice-architecture/
Motivations
• +2000 Services
• Availability Risks
• Risky, expensive deployments
• Poor separation of concerns
• Inefficient execution
07/2020
Cultura/Ferramentas
✔ Comesse pensando no Domínio/Core Domain
✔ Micro serviço não é bala de prata/ Ele pode trazer mais problemas
✔ Lembrar-se dos das ferramentas/disciplina que acompanham o
micro serviço
- Log centralizado
- Monitoramento
- CI/CD
- Escalabilidade/Disponibilidade/Resiliência
- Rastreabilidade
- Manutenibilidade
- Observability
- Devops/Automação
- Testes muitos testes
✔ Refletir frequentemente sobre onde estamos querendo chegar
✔ Maturidade em todos os times
Aprendizados
Qual o tamanho adequado de um micro serviço?

More Related Content

What's hot

DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A OrigemAndré Dias
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosCarlos Felippe Cardoso
 
Metodologias de desenvolvimento - Waterfall vs Agile
Metodologias de desenvolvimento - Waterfall vs AgileMetodologias de desenvolvimento - Waterfall vs Agile
Metodologias de desenvolvimento - Waterfall vs AgileMarcelo Murad
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariTaller Negócio Digitais
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaOtávio Calaça Xavier
 
Devops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaDevops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaFernando Celarino
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014Rodrigo Campos
 
XP como aliado para conter a complexidade de um monolito de mais de 15 anos
XP como aliado para conter a complexidade de um monolito de mais de 15 anosXP como aliado para conter a complexidade de um monolito de mais de 15 anos
XP como aliado para conter a complexidade de um monolito de mais de 15 anosAnderson Silveira
 
Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareElvis Lima
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Processos de Software - 101
Processos  de Software - 101Processos  de Software - 101
Processos de Software - 101Lucas Amaral
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
Quando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesQuando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesJuliano Ribeiro
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develJose Augusto Carvalho
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014Leo Lorieri
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arteilegra
 

What's hot (20)

DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A Origem
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principios
 
Metodologias de desenvolvimento - Waterfall vs Agile
Metodologias de desenvolvimento - Waterfall vs AgileMetodologias de desenvolvimento - Waterfall vs Agile
Metodologias de desenvolvimento - Waterfall vs Agile
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
DevOps
DevOpsDevOps
DevOps
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
Devops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estruturaDevops - A cultura ágil voltada à infra-estrutura
Devops - A cultura ágil voltada à infra-estrutura
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014
 
XP como aliado para conter a complexidade de um monolito de mais de 15 anos
XP como aliado para conter a complexidade de um monolito de mais de 15 anosXP como aliado para conter a complexidade de um monolito de mais de 15 anos
XP como aliado para conter a complexidade de um monolito de mais de 15 anos
 
Kanban
KanbanKanban
Kanban
 
Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de software
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Processos de Software - 101
Processos  de Software - 101Processos  de Software - 101
Processos de Software - 101
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Quando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesQuando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidades
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
CWI Workshop 2016 - Cloud
CWI Workshop 2016 - CloudCWI Workshop 2016 - Cloud
CWI Workshop 2016 - Cloud
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arte
 

Similar to TDC - Qual o tamanho adequado de um micro serviço?

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
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoRenan Capaverde
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Amazon Web Services LATAM
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devopsDiego Pacheco
 
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
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Adoção de nuvem: as verdades que não lhe contaram
Adoção de nuvem: as verdades que não lhe contaramAdoção de nuvem: as verdades que não lhe contaram
Adoção de nuvem: as verdades que não lhe contaramFlavio Medeiros
 
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaAndré Paulovich
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Better Developer
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Estruturando um SaaS Multi-tenant no ecossistema AWS
Estruturando um SaaS Multi-tenant no ecossistema AWSEstruturando um SaaS Multi-tenant no ecossistema AWS
Estruturando um SaaS Multi-tenant no ecossistema AWSmatheuscmpm
 
Cloud computing e ITIL por Emerson Dorow
Cloud computing e ITIL por Emerson DorowCloud computing e ITIL por Emerson Dorow
Cloud computing e ITIL por Emerson DorowFernando Palma
 
Impacto do DevOps nos negócios
Impacto do DevOps nos negóciosImpacto do DevOps nos negócios
Impacto do DevOps nos negóciosRamon Durães
 
MSA: Quando a gestão encontra a arquitetura
MSA: Quando a gestão encontra a arquiteturaMSA: Quando a gestão encontra a arquitetura
MSA: Quando a gestão encontra a arquiteturaDiego Pacheco
 
Boas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesBoas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesAmazon Web Services LATAM
 
Software as a Service
Software as a ServiceSoftware as a Service
Software as a ServiceDenis Vieira
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Cristiano Schwening
 

Similar to TDC - Qual o tamanho adequado de um micro serviço? (20)

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
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimento
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
Vença o jogo da rede
Vença o jogo da redeVença o jogo da rede
Vença o jogo da rede
 
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?
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Adoção de nuvem: as verdades que não lhe contaram
Adoção de nuvem: as verdades que não lhe contaramAdoção de nuvem: as verdades que não lhe contaram
Adoção de nuvem: as verdades que não lhe contaram
 
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinadaConnectionDay 2019 - Divinópolis - Transformação digital turbinada
ConnectionDay 2019 - Divinópolis - Transformação digital turbinada
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Estruturando um SaaS Multi-tenant no ecossistema AWS
Estruturando um SaaS Multi-tenant no ecossistema AWSEstruturando um SaaS Multi-tenant no ecossistema AWS
Estruturando um SaaS Multi-tenant no ecossistema AWS
 
Microservices
MicroservicesMicroservices
Microservices
 
Cloud computing e ITIL por Emerson Dorow
Cloud computing e ITIL por Emerson DorowCloud computing e ITIL por Emerson Dorow
Cloud computing e ITIL por Emerson Dorow
 
Impacto do DevOps nos negócios
Impacto do DevOps nos negóciosImpacto do DevOps nos negócios
Impacto do DevOps nos negócios
 
MSA: Quando a gestão encontra a arquitetura
MSA: Quando a gestão encontra a arquiteturaMSA: Quando a gestão encontra a arquitetura
MSA: Quando a gestão encontra a arquitetura
 
Boas práticas de arquitetura e operações
Boas práticas de arquitetura e operaçõesBoas práticas de arquitetura e operações
Boas práticas de arquitetura e operações
 
Software as a Service
Software as a ServiceSoftware as a Service
Software as a Service
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 

More from Rafael Salerno de Oliveira (20)

Aws route 53
Aws route 53Aws route 53
Aws route 53
 
Aws Network Introduction
Aws Network Introduction Aws Network Introduction
Aws Network Introduction
 
Aws system manager
Aws system managerAws system manager
Aws system manager
 
Clean code
Clean codeClean code
Clean code
 
Kontena
KontenaKontena
Kontena
 
Docker hub
Docker hubDocker hub
Docker hub
 
Docker cloud
Docker cloudDocker cloud
Docker cloud
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Domain driven design com functional programing(f#)
Domain driven design com functional programing(f#)Domain driven design com functional programing(f#)
Domain driven design com functional programing(f#)
 
Virtual box
Virtual boxVirtual box
Virtual box
 
Serf
SerfSerf
Serf
 
Vagrant
VagrantVagrant
Vagrant
 
V8 Google
V8 GoogleV8 Google
V8 Google
 
Thinking in systems
Thinking in systemsThinking in systems
Thinking in systems
 
Design pattern for mobile Android IOS
Design pattern for mobile Android IOSDesign pattern for mobile Android IOS
Design pattern for mobile Android IOS
 
Batoo jpa
Batoo jpaBatoo jpa
Batoo jpa
 
Hammock Driven Development
Hammock Driven DevelopmentHammock Driven Development
Hammock Driven Development
 
Responsibility Driven Design
Responsibility Driven DesignResponsibility Driven Design
Responsibility Driven Design
 
Service Design Patterns - Study Case
Service Design Patterns - Study Case  Service Design Patterns - Study Case
Service Design Patterns - Study Case
 
Hammock Driven Design
Hammock Driven DesignHammock Driven Design
Hammock Driven Design
 

TDC - Qual o tamanho adequado de um micro serviço?

  • 1. Qual o tamanho adequado de um micro serviço?
  • 2. Rafael Salerno de Oliveira • Solution Architect na HypeFlame/Agibank • Mais de 15 anos em Desenvolvimento de Software • Últimos 5 anos trabalhando com ferramentas de Devops/Cloud/ Arquitetura de Micro Services • Entusiasta • TDD,DDD, linguagens funcionais • XP, métodos ágeis • Arquitetura Evolucionária https://www.linkedin.com/in/rafael-salerno-de-oliveira-a8551b23/ Apresentação
  • 3. Case Agibank/HypeFlame Qual o tamanho adequado de um micro serviço? Aprendizado que tivemos reconstruindo a arquitetura de um banco. • Core banking • CRM • Cadastro central de pessoas • Infraestrutura de componentes (Kubernetes/AWS) • Apenas .Net mais linguagens Java/Python/Scala/NodeJs • Cultura
  • 4. • Nós trabalhamos desde 2017 com cerca de 80% da arquitetura baseada em micro serviços. • Hoje temos cerca de 800 micro serviços • 200 Bancos de Dados (Relacionais e Não relacionais) • Fazemos media de 1200 deploys por mês / média de 40 por dia • Temos cerca de 35 time de desenvolvimento (Squads) • Muito testes automatizado .... • Muitas Soluções e muitos problemas ...... Cenário Atual 2021
  • 5. até 2016 .... Tínhamos uma arquitetura monolítica Cada deploy era um evento, com muita sorte 4 por mês Poucos testes automatizados Times alocados o final de semana todo testando e realizando ajustes Como começamos
  • 6. Em 2017 .... Com o objetivo de escalar agressivamente o Business. Criamos um time de Arquitetura e trouxemos /apresentamos um novo padrão e novas tecnologias como: • Micro Serviços • Kubernetes • API Gateway • Cloud • CI/CD • Monitoramento • Treacebility • Log Centralizado • Kafka/Rabbitmq • Diversidade de linguagens • Testes Unitários / Contrato/ Outros (de forma obrigatória) • Times organizados por Business Quando tudo mudou
  • 7. Porem .... Fomos tentados pelo purismo da arquitetura de micro serviços
  • 8. 500 micro serviços 300 bancos de dados em questão de menos de 1 ano 15 times, 20% da nova arquitetura O tempo nos ensinou que alguns caminhos escolhidos na arquitetura de micro serviços não são tão bons assim, ao menos para a nossa realidade. Logo...
  • 9. Com o passar do tempo vieram alguns problemas, como: • Custo • Rastreabilidade/ Bugs complexos • Escalabilidade • Manutenibilidade • Qualidade dos Testes Problemas...
  • 10. • 500 Micro serviços - 1gb, 512mb, 256mb por serviço - 1 vCPU - Quantas maquinas precisamos? • 1 Semana 1tb de logs • alguns monolito (ferramentas de terceiros/outros mal projetados) • Banco de Dados (muitos) • Tudo isso na AWS • Custo por manter isso ligado 24/7 passou a ser fixo • Número de pessoas para manutenção precisou crescer arquitetos, Infraestrutura, Segurança, Desenvolvedores, etc… OBS: Impacto de uma decisão de arquitetura Custo
  • 11. 500 micro serviços 300 bancos de dados Exigem maior maturidade para rastreabilidade - Ferramentas - Expertise Em pouco tempo tínhamos poucas pessoas que conseguia fazer um throubleshooting completo Rastreabilidade
  • 12. Imaginamos então um cenário onde o usuário fez login no seu aplicativo e essa única chamada, se desencadeou em 10 ou 20 apenas para uma operação. Rastreabilidade Quando tivermos um problema teremos 10, 20 possíveis lugares de pontos de falha.
  • 13. Imaginamos então um cenário onde o usuário fez login no seu aplicativo e essa única chamada, se desencadeou em 10 ou 20 apenas para uma operação. Rastreabilidade Quando tivermos um problema teremos 10, 20 possíveis lugares de pontos de falha.
  • 15. Com esses mesmos: - 500 micro serviços - 300 bancos de dados De nada adianta escalar alguns serviços e outros não Fazer tunning de alguns bancos outros não Escalabilidade
  • 16. Uma coisa era escalar Monolito outra é micro serviços A escalabilidade em um ambiente tão segmentado e granular pode virar um problema. Mesmo cenário: • Um usuário executando uma operação em seu aplicativo, • Operação que desencadeia 10 ou 20 chamadas de micro serviços Maior parte deles deve subir horizontalmente • Bancos de dados também deve estar preparados para esse volume, que pode ser sazonal ou definitivo. O pool de conexões deve subir também para receber esses novos serviços que estão subindo. Ou estar preparados para esses volume. Escalabilidade
  • 18. • Um time tinha 10 a 20 serviços, muito pequenos • 1 Feature precisava commit em quase todos • Mesmo dev fazia 10 commits em 10 serviços • Monolito distribuido Manutenibilidade
  • 20. Apenas testes unitários com 90% de cobertura não é o suficiente Precisa de um testes mais abrangente Alguém precisa testar com visão mais ampla Performance de 1 serviço pode desencadear um problema generalizado, assim como um banco com performance Qualidade de Testes
  • 22. Após algum tempo nesse cenário que passou a ser frequente, chegou a hora de parar e analisar o cenário atual. A empresa crescendo, novos clientes, ações de marketing frequentes… Seguir assim poderia ser cada vez mais problemático para um futuro sustentável Então...
  • 23. Esse pontos de problemas que nos fizeram pensar e dar alguns passos atrás Continuar com arquitetura de micro serviços era uma premissa Os benefícios dos micros serviços é uma questão indiscutível, já que favoreceu um crescimento de negócio, técnico, agilidade, escalabilidade, desacoplamento, entre outros. As entregas de demandas independência dos times era boa comparada ao passado Então...
  • 24. O Que a História da Software conta? Paramos então para avaliar o que algumas empresas estão fazendo nesse sentido, o que a história do mudo de software tem para nos contar.
  • 25. O Que a História da Software conta?
  • 27. Como passamos a pensar... Daremos então esse “passo atrás” e pensamos agora em domínio DDD. Palavra chave desse passo, pensando em domínio começamos a ver que antes de criar novos serviços, precisamos pensar: • A qual domínio ele pertence? • Esse domínio que ele pertence está bem conceituado? • Podemos agrupar domínios pequenos com o Core Domain?
  • 28. Como passamos a pensar... Geralmente nos concentramos apenas no Tactical (mais próximas do código)
  • 29. Como passamos a pensar...
  • 30. Como passamos a pensar...
  • 31. Passo Atrás Definindo o domínio alguns problemas passaram a ser resolvidos. A quantidade de micro serviços passou a cair, a manutenção passou a fazer mais simples, a escalabilidade passou a ser mais objetiva, quando ocorria erro eram menos lugares para se verificar logs. Testes passaram agora a fazer mais sentido, um teste unitário de fato estava testando código de negócio. Testes de performance e integrações passaram a ser mais simples de analisar.
  • 32. Passo Atrás Se considerarmos que um serviço deveria iniciar como: • um monolito, porém modularizado, com domínio bem definido • Levando alguns conceitos de DDD como Bounded Contexts • Design by Contract os micro serviços parecem estar mais adequados para uma futura segmentação. Isso leva tempo....
  • 33. E qual o Tamanho ideal? O Mais certo é depende: • da empresa • do business • Qual a maturidade que tem a empresa ? Ferramentas? Cultura? Profissionais? • Qual o Business? Mas o que podemos considerar e que nos traz perto da idealidade é o DDD. Pensar no seu domínio, pois é ele que faz com que as coisas façam sentido e tragam o que realmente importa.
  • 34. Domain-Oriented Microservices Architecture - DOMA https://eng.uber.com/microservice-architecture/ Motivations • +2000 Services • Availability Risks • Risky, expensive deployments • Poor separation of concerns • Inefficient execution 07/2020
  • 36. ✔ Comesse pensando no Domínio/Core Domain ✔ Micro serviço não é bala de prata/ Ele pode trazer mais problemas ✔ Lembrar-se dos das ferramentas/disciplina que acompanham o micro serviço - Log centralizado - Monitoramento - CI/CD - Escalabilidade/Disponibilidade/Resiliência - Rastreabilidade - Manutenibilidade - Observability - Devops/Automação - Testes muitos testes ✔ Refletir frequentemente sobre onde estamos querendo chegar ✔ Maturidade em todos os times Aprendizados
  • 37. Qual o tamanho adequado de um micro serviço?