SlideShare uma empresa Scribd logo
1 de 16
1
Micro Serviços
Autônomos
ou quase
Rafael Gonzaga
O Monolítico
- Ótimo ponto de partida
- Domínio global - Fácil merge
- Escalonamento Vertical
- Dificuldade na divisão dos times
- Release completo
- - Resiliência + Acoplamento
O Micro Serviço
- Micro entregas
- Fácil gerenciamento de time
- Resiliência / Escalabilidade
- APIs poliglotas - OpenSource <3
- Escalonamento Horizontal
- Complexidade
- Consistência Eventual
- Dependência Interdomínios?!
4
Fluxo - MicroLítico
- Micro entregas & Grandes bugs.
- Complexidade.
- Consistência Eventual.
- Dependência Interdomínios?!
- Dependência Cíclica.
- Testes impossíveis.
6
Consistência
Cada leitura recebe a escrita mais recente ou um erro
Disponibilidade
Cada pedido recebe uma resposta (sem erro) - sem
garantia de que contém a escrita mais recente
Partição tolerante a falhas
O sistema continua a funcionar apesar de um número
arbitrário de mensagens serem descartadas (ou
atrasadas) pela rede entre nós.
Teorema CAP
Este Teorema Afirma que é impossível que o armazenamento de
dados distribuído forneça simultaneamente mais de duas das três
garantias seguintes
7
Consistência Eventual
uma abordagem de larga escala
API Single Server
Deixar um servidor processando as requisições para recuperar os
dados.
Database Sharding
Permitir todas aplicações compartilharem o mesmo servidor de
dados.
Manter mais de um servidor de dados
Fazer com que eventualmente os dados sejam consolidados
entre todos os servidores. RSYNC escalável.
8
Qual seria a arquitetura ideal?
9
10
E se tentarmos unir o melhor dos
dois mundos?
Surge então a ideia dos Micro Serviços Autônomos ou
Micro Serviços da forma certa.
Um Micro Serviço não deve depender de recursos de
outro Micro Serviço.
11
Em sistemas distribuídos, o Teorema CAP aponta que temos
que optar entre manter consistência ou disponibilidade para
os usuários.
Levantando Requisitos
A Resiliência é totalmente ligada ao acoplamento, portanto é necessária a replicação de dados que
não pertence ao domínio atual, mas é usado pelo mesmo.
DRY is not a pattern for architecture!
12
Wrong way Good way
13
Como tratar o streaming de dados
considerando consistência?
Consistência Eventual!
CDC - ChangeDataCapture
14
15
OutBox Pattern
16
É possível definir um Monolítico
escalável!
Mas… Fica pra próxima talk 😁
.

Mais conteúdo relacionado

Semelhante a Microsserviços Autônomos

Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Ricardo Ferreira
 

Semelhante a Microsserviços Autônomos (20)

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
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFood
 
Poster08
Poster08Poster08
Poster08
 
Trabalho final psdc
Trabalho final psdcTrabalho final psdc
Trabalho final psdc
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicações
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020
 
Iniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWSIniciando com serviços de bancos de dados gerenciados na AWS
Iniciando com serviços de bancos de dados gerenciados na AWS
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Curso completo de_redes
Curso completo de_redesCurso completo de_redes
Curso completo de_redes
 
SISTEMA SD
SISTEMA SDSISTEMA SD
SISTEMA SD
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
TDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsTDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory Datagrids
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
 
Alocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant ColonyAlocação Eficiente de Recursos de Energia com Ant Colony
Alocação Eficiente de Recursos de Energia com Ant Colony
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
 
MOM
MOM MOM
MOM
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Microsserviços Autônomos

  • 2. O Monolítico - Ótimo ponto de partida - Domínio global - Fácil merge - Escalonamento Vertical - Dificuldade na divisão dos times - Release completo - - Resiliência + Acoplamento
  • 3. O Micro Serviço - Micro entregas - Fácil gerenciamento de time - Resiliência / Escalabilidade - APIs poliglotas - OpenSource <3 - Escalonamento Horizontal - Complexidade - Consistência Eventual - Dependência Interdomínios?!
  • 4. 4
  • 5. Fluxo - MicroLítico - Micro entregas & Grandes bugs. - Complexidade. - Consistência Eventual. - Dependência Interdomínios?! - Dependência Cíclica. - Testes impossíveis.
  • 6. 6 Consistência Cada leitura recebe a escrita mais recente ou um erro Disponibilidade Cada pedido recebe uma resposta (sem erro) - sem garantia de que contém a escrita mais recente Partição tolerante a falhas O sistema continua a funcionar apesar de um número arbitrário de mensagens serem descartadas (ou atrasadas) pela rede entre nós. Teorema CAP Este Teorema Afirma que é impossível que o armazenamento de dados distribuído forneça simultaneamente mais de duas das três garantias seguintes
  • 7. 7 Consistência Eventual uma abordagem de larga escala API Single Server Deixar um servidor processando as requisições para recuperar os dados. Database Sharding Permitir todas aplicações compartilharem o mesmo servidor de dados. Manter mais de um servidor de dados Fazer com que eventualmente os dados sejam consolidados entre todos os servidores. RSYNC escalável.
  • 8. 8 Qual seria a arquitetura ideal?
  • 9. 9
  • 10. 10 E se tentarmos unir o melhor dos dois mundos? Surge então a ideia dos Micro Serviços Autônomos ou Micro Serviços da forma certa. Um Micro Serviço não deve depender de recursos de outro Micro Serviço.
  • 11. 11 Em sistemas distribuídos, o Teorema CAP aponta que temos que optar entre manter consistência ou disponibilidade para os usuários. Levantando Requisitos A Resiliência é totalmente ligada ao acoplamento, portanto é necessária a replicação de dados que não pertence ao domínio atual, mas é usado pelo mesmo. DRY is not a pattern for architecture!
  • 13. 13 Como tratar o streaming de dados considerando consistência? Consistência Eventual! CDC - ChangeDataCapture
  • 14. 14
  • 16. 16 É possível definir um Monolítico escalável! Mas… Fica pra próxima talk 😁 .