SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Olá, pessoas!
Trilha Microservices
JOGO RÁPIDO!
Participantes online
podem responder
“Sim” no chat!
➔ Quem utiliza microservices no dia a dia?
Compondo uma plataforma
de software
com microservices.
Isaac Felisberto de Souza
Engenheiro de Software
ROTEIRO
DE HOJE!
1
Evolução do software
até o modelo de plataforma.
2 Compondo uma plataforma!
Evolução do software
até o modelo de plataforma.
1
6
A MUITO
TEMPO
ATRÁS...
SOFTWARE
DE CAIXINHA
80’s
Software rodando na
máquina do usuário
90’s
Software rodando
usando a rede privada
2000’s
Software (web) rodando
na rede da empresa
e com acesso externo
www.minhaempresa.com/sistema
2015+
SaaS
SOFTWARE
COMO SERVIÇO
2010’s
Software rodando
na CLOUD com acesso em
qualquer lugar do mundo
www.sistema.com/minhaempresa
SaaS
Software as a Service
Software SaaS
é um modelo plataforma?
Não :-)
O que é o “modelo de plataforma”?
Construir uma base de coisas reutilizáveis
que facilite a criação de novas coisas
de forma rápida através do reuso da base existente.
Uma plataforma começa a existir
quando há vários produtos e serviços
integrados entre eles,
reaproveitando um conjunto comum
de serviços (softwares).
Representando software em modelo de plataforma
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
SERVICES
PRODUCTS
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Exemplo de
plataforma
Como deve ser a plataforma do Google
PRODUTOS DO GOOGLE
BUSINESS
BASE / CORE
SERVICES
PRODUCTS
INFRA
PRODUTOS DE OUTRAS EMPRESAS
???
Google Account File Storage
Email Drive Photos
Compondo uma plataforma!
2
Compor uma
plataforma
envolve muitos temas
DDD
Arquiteturas
Distribuídas
Microservices Arquitetura
de Eventos
BFFs
API
Gateway/Manager
Dados
Camadas
Integrações
Organização
de Times
MVPs
APIs
Contêineres
Monitoramento
Rastreamento
Tolerância
a falhas
Resiliência
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Vamos compor uma plataforma,
encaixando os temas sobre a visão do modelo de plataforma.
SERVICES
PRODUCTS
DDD
(Domain Driven Design)
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Camadas sugeridas por DDD,
são aderentes ao modelo de plataforma.
SERVICES
PRODUCTS
Domain
User
Interface
Application
Infraestructure
Serviços são organizados a partir do modelo de domínio
(domínios, contextos e entidades)
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
SERVICES
PRODUCTS
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Domínio A
Contexto A Contexto B
Domínio B
Contexto C Contexto D
Domain
Contexto Comum A Contexto Comum B
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Domain (Business e Base/Core) é composto por microservices,
que representam contextos ou parte deles, agrupados em um domínio.
SERVICES
PRODUCTS
Microservice A Microservice C
Microservice B Microservices…
Microservice E Microservices…
APIs
➔ O foco não pode ser “endpoints para o front”.
➔ Deve haver padrão e consistência nos contratos.
➔ Deve ser documentada.
➔ Deve possuir versionamento.
➔ Dentre outros…
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
A camada Application é composta por APIs.
SERVICES
PRODUCTS
Application
API’s API’s API’s API’s
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Mas elas são expostas a partir de um Gateway/Manager.
SERVICES
PRODUCTS
API’s API’s API’s API’s
API Gateway/Manager
Application
Arquitetura
Orientada a
Eventos
➔ Deve-se evitar a comunicação direta entre
microservices.
➔ Microservices publicam e consomem eventos.
➔ Tais eventos devem ser os eventos do domínio.
➔ Contratos das mensagens devem seguir o
modelo de domínio.
➔ Um evento publicado não deve conhecer
diretamente seus consumidores.
➔ Dentre outros…
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Barramento de eventos com eventos do domínio,
microservices publicam e consomem tais eventos
SERVICES
PRODUCTS
Barramento
de eventos
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Camada de produtos não interage com o barramento,
Um mecanismo de Webhooks deve intermediar.
SERVICES
PRODUCTS
Barramento
de eventos
Webhooks
Dados
➔ Cada microservice possui sua própria base.
➔ Os dados podem ser replicados em um local
centralizado (CQRS, DataLake, Data Warehouse…)
➔ Modelagem dos dados respeita o modelo de
domínio.
➔ Dados podem ser replicados/populados a partir
dos eventos.
➔ Dentre outros…
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Microservices podem consultar os dados centralizados.
SERVICES
PRODUCTS
Dados
Centralizados
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Camada de produtos e microservices podem consultar os dados
através de Graphql ou outras estratégias dinâmicas de consulta.
SERVICES
PRODUCTS
Dados
Centralizados
Graphql
Integrações com
terceiros
➔ Deve-se evitar que muitos microservices se
integrem diretamente a um mesmo terceiro.
➔ Centralize a integração em um microservice, e os
demais devem depender dessa implementação
interna.
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Um microservice sabe se integrar a um terceiro.
Os demais conhecem apenas a implementação interna da plataforma.
SERVICES
PRODUCTS
Serviços
Terceiros
Gerenciamento e
orquestração de
microservices
Uma plataforma deve ter definições e mecanismos
padrões para:
➔ Conteinerização.
➔ Monitoramento.
➔ Descoberta de serviços
➔ Resiliência, tolerância a falha, auto escala
➔ Dentre outros…
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Todo ferramental de gerenciamento e orquestração aparece na
camada de infra.
SERVICES
PRODUCTS
Infraestructure
Kubernetes, ECS, … Service Mash APM Logs …
Camada de
produto, mais que
apenas frontend
➔ Microservices não devem conter lógicas
relacionadas ao frontend. Para isso pode-se
utilizar BFFs (Backend for frontend)
➔ Camada de serviço não deve ser utilizada para
experimentações.
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Camada de produto é equivalente a camada User Interface
SERVICES
PRODUCTS
User
Interface
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
BFFs podem ser utilizados para lógicas em backend,
sem contaminar os microservices.
SERVICES
PRODUCTS
BFF BFF BFF BFF
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
MVPs ou POCs, nascem na camada de produto,
e quando consolidados geram serviços na camada de serviços.
SERVICES
PRODUCTS
MVP
POC
Organização de
times
➔ A organização de times é feita considerando a
modelagem de domínios e as camadas da
plataforma
➔ Figuras como Arquiteto de solução e Arquiteto de
software ganham destaque em uma Plataforma.
Times especializados nas camadas,
domínios e contextos da plataforma!
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
SERVICES
PRODUCTS
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Domínio A
Contexto A
Domínio B
Contexto B Contexto C Contexto D
Time
A
Time
B
Time
C
Time
D
Time
E
Time
F
Time
G
PRODUTOS DA MINHA EMPRESA
BUSINESS
BASE / CORE
PRODUTO A PRODUTO B PRODUTO C
SERVICES
PRODUCTS
INFRA
PRODUTOS DE OUTRAS EMPRESAS
PRODUTO A PRODUTO B PRODUTO C
PRODUTO D
Domínio A
Contexto A
Domínio B
Contexto B Contexto C Contexto D
Arquitetos
Frontend
Arquitetos
de Solução
Arquitetos
de Software
Representar
visualmente a
plataforma
➔ Diagrama usando C4Model
➔ O Diagrama é utilizado para planejar e depois
implementar
Domain
Microservices
Business Microservices
Business
Microservices
Core
External
Services
Microservice
external services
Event Bus
Applicatoin
API Gateway
BFF
FrontEnds
Centralized
Data
User
Interface
Other Products
Compor uma plataforma
com microservices
vai muito além da fragmentação
de um software em pequenos serviços.
Isaac Felisberto de Souza
Engenheiro de Software
isaacsouza@gmail.com
linkedin.com/in/isaacfsouza
Obrigado!
Dúvidas?
Visite:
www.guia.dev
Conheça:
PARA EMPRESAS
Siga e compartilhe:
@guia_dev
Guia Dev

Mais conteúdo relacionado

Semelhante a Compondo uma plataforma de software com microservices.

Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Renato Groffe
 
SAP Fiori Development from Scratch
SAP Fiori Development from ScratchSAP Fiori Development from Scratch
SAP Fiori Development from ScratchJose Nunes
 
[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataformaAlessandro Almeida
 
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Renato Groff
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Rodrigo Kono
 
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...Carlos Carvalho Citrangulo Junior
 
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...Amazon Web Services
 
Continuous Delivery com TFS e Release Management for Visual Studio 2013
Continuous Delivery com TFS e Release Management for Visual Studio 2013Continuous Delivery com TFS e Release Management for Visual Studio 2013
Continuous Delivery com TFS e Release Management for Visual Studio 2013André Dias
 
Desenvolvimento Web Parte I
Desenvolvimento Web Parte IDesenvolvimento Web Parte I
Desenvolvimento Web Parte Iigorpimentel
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009FabricioManzi
 
Visual Studio 2013 - Recursos da IDE
Visual Studio 2013 - Recursos da IDEVisual Studio 2013 - Recursos da IDE
Visual Studio 2013 - Recursos da IDEStefanini
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Performance na Web - GDG DevFest SP 2014
Performance na Web - GDG DevFest SP 2014Performance na Web - GDG DevFest SP 2014
Performance na Web - GDG DevFest SP 2014Alexandre Tarifa
 
CliquePerformance - Solução de BI Dashboards e Relatórios
CliquePerformance - Solução de BI Dashboards e RelatóriosCliquePerformance - Solução de BI Dashboards e Relatórios
CliquePerformance - Solução de BI Dashboards e RelatóriosMarcelo Santos
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010Fabian Gehrke
 

Semelhante a Compondo uma plataforma de software com microservices. (20)

Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
SAP Fiori Development from Scratch
SAP Fiori Development from ScratchSAP Fiori Development from Scratch
SAP Fiori Development from Scratch
 
[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma
 
Computação em nuvem e Windows Azure
Computação em nuvem e Windows AzureComputação em nuvem e Windows Azure
Computação em nuvem e Windows Azure
 
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4
 
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...
MVP ShowCast IT Produtividade e colaboração Construindo indicadores e dashboa...
 
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...
Scale fearlessly with Amazon DynamoDB adaptive capacity - ADB302 - São Paulo ...
 
Continuous Delivery com TFS e Release Management for Visual Studio 2013
Continuous Delivery com TFS e Release Management for Visual Studio 2013Continuous Delivery com TFS e Release Management for Visual Studio 2013
Continuous Delivery com TFS e Release Management for Visual Studio 2013
 
Desenvolvimento Web Parte I
Desenvolvimento Web Parte IDesenvolvimento Web Parte I
Desenvolvimento Web Parte I
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Visual Studio 2013 - Recursos da IDE
Visual Studio 2013 - Recursos da IDEVisual Studio 2013 - Recursos da IDE
Visual Studio 2013 - Recursos da IDE
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Performance na Web - GDG DevFest SP 2014
Performance na Web - GDG DevFest SP 2014Performance na Web - GDG DevFest SP 2014
Performance na Web - GDG DevFest SP 2014
 
CliquePerformance - Solução de BI Dashboards e Relatórios
CliquePerformance - Solução de BI Dashboards e RelatóriosCliquePerformance - Solução de BI Dashboards e Relatórios
CliquePerformance - Solução de BI Dashboards e Relatórios
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010
TDC 2011 Goiânia - Desenvolvendo a Integração do Windows Azure e SharePoint 2010
 

Mais de Isaac de Souza

Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Isaac de Souza
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Isaac de Souza
 
Desenhando a arquitetura do software!
Desenhando a arquitetura do software!Desenhando a arquitetura do software!
Desenhando a arquitetura do software!Isaac de Souza
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Isaac de Souza
 
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Isaac de Souza
 
A multiplicação dos devs!
A multiplicação dos devs!A multiplicação dos devs!
A multiplicação dos devs!Isaac de Souza
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?Isaac de Souza
 
É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!Isaac de Souza
 
Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Isaac de Souza
 
Maior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsMaior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsIsaac de Souza
 

Mais de Isaac de Souza (12)

Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.Sua solução escala? Testes de Stress e APMs podem responder.
Sua solução escala? Testes de Stress e APMs podem responder.
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
 
Desenhando a arquitetura do software!
Desenhando a arquitetura do software!Desenhando a arquitetura do software!
Desenhando a arquitetura do software!
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...
 
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
Microservices em Python. Como estamos construindo a maior plataforma Agro do ...
 
A multiplicação dos devs!
A multiplicação dos devs!A multiplicação dos devs!
A multiplicação dos devs!
 
Estamos trabalhando melhor com dependências e ambientes usando containers?
Estamos trabalhando melhor  com dependências e ambientes  usando containers?Estamos trabalhando melhor  com dependências e ambientes  usando containers?
Estamos trabalhando melhor com dependências e ambientes usando containers?
 
É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!É hora de pensar em soluções portáveis na cloud!
É hora de pensar em soluções portáveis na cloud!
 
Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?Cloud computing, quais vantagens reais?
Cloud computing, quais vantagens reais?
 
Maior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em railsMaior performance no seu sistema com o uso adequado de orm em rails
Maior performance no seu sistema com o uso adequado de orm em rails
 

Compondo uma plataforma de software com microservices.

  • 2. JOGO RÁPIDO! Participantes online podem responder “Sim” no chat! ➔ Quem utiliza microservices no dia a dia?
  • 3. Compondo uma plataforma de software com microservices. Isaac Felisberto de Souza Engenheiro de Software
  • 4. ROTEIRO DE HOJE! 1 Evolução do software até o modelo de plataforma. 2 Compondo uma plataforma!
  • 5. Evolução do software até o modelo de plataforma. 1
  • 6. 6 A MUITO TEMPO ATRÁS... SOFTWARE DE CAIXINHA 80’s Software rodando na máquina do usuário 90’s Software rodando usando a rede privada
  • 7. 2000’s Software (web) rodando na rede da empresa e com acesso externo www.minhaempresa.com/sistema
  • 8. 2015+ SaaS SOFTWARE COMO SERVIÇO 2010’s Software rodando na CLOUD com acesso em qualquer lugar do mundo www.sistema.com/minhaempresa
  • 10. Software SaaS é um modelo plataforma? Não :-)
  • 11. O que é o “modelo de plataforma”? Construir uma base de coisas reutilizáveis que facilite a criação de novas coisas de forma rápida através do reuso da base existente.
  • 12. Uma plataforma começa a existir quando há vários produtos e serviços integrados entre eles, reaproveitando um conjunto comum de serviços (softwares).
  • 13.
  • 14. Representando software em modelo de plataforma PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D
  • 16. Como deve ser a plataforma do Google PRODUTOS DO GOOGLE BUSINESS BASE / CORE SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS ??? Google Account File Storage Email Drive Photos
  • 18. Compor uma plataforma envolve muitos temas DDD Arquiteturas Distribuídas Microservices Arquitetura de Eventos BFFs API Gateway/Manager Dados Camadas Integrações Organização de Times MVPs APIs Contêineres Monitoramento Rastreamento Tolerância a falhas Resiliência
  • 19. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Vamos compor uma plataforma, encaixando os temas sobre a visão do modelo de plataforma. SERVICES PRODUCTS
  • 21. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Camadas sugeridas por DDD, são aderentes ao modelo de plataforma. SERVICES PRODUCTS Domain User Interface Application Infraestructure
  • 22. Serviços são organizados a partir do modelo de domínio (domínios, contextos e entidades) PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Domínio A Contexto A Contexto B Domínio B Contexto C Contexto D Domain Contexto Comum A Contexto Comum B
  • 23. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Domain (Business e Base/Core) é composto por microservices, que representam contextos ou parte deles, agrupados em um domínio. SERVICES PRODUCTS Microservice A Microservice C Microservice B Microservices… Microservice E Microservices…
  • 24. APIs ➔ O foco não pode ser “endpoints para o front”. ➔ Deve haver padrão e consistência nos contratos. ➔ Deve ser documentada. ➔ Deve possuir versionamento. ➔ Dentre outros…
  • 25. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D A camada Application é composta por APIs. SERVICES PRODUCTS Application API’s API’s API’s API’s
  • 26. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Mas elas são expostas a partir de um Gateway/Manager. SERVICES PRODUCTS API’s API’s API’s API’s API Gateway/Manager Application
  • 27. Arquitetura Orientada a Eventos ➔ Deve-se evitar a comunicação direta entre microservices. ➔ Microservices publicam e consomem eventos. ➔ Tais eventos devem ser os eventos do domínio. ➔ Contratos das mensagens devem seguir o modelo de domínio. ➔ Um evento publicado não deve conhecer diretamente seus consumidores. ➔ Dentre outros…
  • 28. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Barramento de eventos com eventos do domínio, microservices publicam e consomem tais eventos SERVICES PRODUCTS Barramento de eventos
  • 29. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Camada de produtos não interage com o barramento, Um mecanismo de Webhooks deve intermediar. SERVICES PRODUCTS Barramento de eventos Webhooks
  • 30. Dados ➔ Cada microservice possui sua própria base. ➔ Os dados podem ser replicados em um local centralizado (CQRS, DataLake, Data Warehouse…) ➔ Modelagem dos dados respeita o modelo de domínio. ➔ Dados podem ser replicados/populados a partir dos eventos. ➔ Dentre outros…
  • 31. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Microservices podem consultar os dados centralizados. SERVICES PRODUCTS Dados Centralizados
  • 32. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Camada de produtos e microservices podem consultar os dados através de Graphql ou outras estratégias dinâmicas de consulta. SERVICES PRODUCTS Dados Centralizados Graphql
  • 33. Integrações com terceiros ➔ Deve-se evitar que muitos microservices se integrem diretamente a um mesmo terceiro. ➔ Centralize a integração em um microservice, e os demais devem depender dessa implementação interna.
  • 34. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Um microservice sabe se integrar a um terceiro. Os demais conhecem apenas a implementação interna da plataforma. SERVICES PRODUCTS Serviços Terceiros
  • 35. Gerenciamento e orquestração de microservices Uma plataforma deve ter definições e mecanismos padrões para: ➔ Conteinerização. ➔ Monitoramento. ➔ Descoberta de serviços ➔ Resiliência, tolerância a falha, auto escala ➔ Dentre outros…
  • 36. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Todo ferramental de gerenciamento e orquestração aparece na camada de infra. SERVICES PRODUCTS Infraestructure Kubernetes, ECS, … Service Mash APM Logs …
  • 37. Camada de produto, mais que apenas frontend ➔ Microservices não devem conter lógicas relacionadas ao frontend. Para isso pode-se utilizar BFFs (Backend for frontend) ➔ Camada de serviço não deve ser utilizada para experimentações.
  • 38. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Camada de produto é equivalente a camada User Interface SERVICES PRODUCTS User Interface
  • 39. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D BFFs podem ser utilizados para lógicas em backend, sem contaminar os microservices. SERVICES PRODUCTS BFF BFF BFF BFF
  • 40. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D MVPs ou POCs, nascem na camada de produto, e quando consolidados geram serviços na camada de serviços. SERVICES PRODUCTS MVP POC
  • 41. Organização de times ➔ A organização de times é feita considerando a modelagem de domínios e as camadas da plataforma ➔ Figuras como Arquiteto de solução e Arquiteto de software ganham destaque em uma Plataforma.
  • 42. Times especializados nas camadas, domínios e contextos da plataforma! PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Domínio A Contexto A Domínio B Contexto B Contexto C Contexto D Time A Time B Time C Time D Time E Time F Time G
  • 43. PRODUTOS DA MINHA EMPRESA BUSINESS BASE / CORE PRODUTO A PRODUTO B PRODUTO C SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS PRODUTO A PRODUTO B PRODUTO C PRODUTO D Domínio A Contexto A Domínio B Contexto B Contexto C Contexto D Arquitetos Frontend Arquitetos de Solução Arquitetos de Software
  • 44. Representar visualmente a plataforma ➔ Diagrama usando C4Model ➔ O Diagrama é utilizado para planejar e depois implementar
  • 45. Domain Microservices Business Microservices Business Microservices Core External Services Microservice external services Event Bus Applicatoin API Gateway BFF FrontEnds Centralized Data User Interface Other Products
  • 46. Compor uma plataforma com microservices vai muito além da fragmentação de um software em pequenos serviços.
  • 47. Isaac Felisberto de Souza Engenheiro de Software isaacsouza@gmail.com linkedin.com/in/isaacfsouza Obrigado! Dúvidas? Visite: www.guia.dev Conheça: PARA EMPRESAS Siga e compartilhe: @guia_dev Guia Dev