Olá, pessoas!
Trilha Microservices
JOGO RÁPIDO!
Participantes online podem responder
“Sim” no chat!
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
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
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
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
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
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:
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
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
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
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?