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

Compondo uma plataforma de software com microservices.

  • 1.
  • 2.
    JOGO RÁPIDO! Participantes online podemresponder “Sim” no chat! ➔ Quem utiliza microservices no dia a dia?
  • 3.
    Compondo uma plataforma desoftware com microservices. Isaac Felisberto de Souza Engenheiro de Software
  • 4.
    ROTEIRO DE HOJE! 1 Evolução dosoftware 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 Softwarerodando na máquina do usuário 90’s Software rodando usando a rede privada
  • 7.
    2000’s Software (web) rodando narede da empresa e com acesso externo www.minhaempresa.com/sistema
  • 8.
    2015+ SaaS SOFTWARE COMO SERVIÇO 2010’s Software rodando naCLOUD com acesso em qualquer lugar do mundo www.sistema.com/minhaempresa
  • 9.
  • 10.
    Software SaaS é ummodelo 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çaa existir quando há vários produtos e serviços integrados entre eles, reaproveitando um conjunto comum de serviços (softwares).
  • 14.
    Representando software emmodelo 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
  • 15.
  • 16.
    Como deve sera plataforma do Google PRODUTOS DO GOOGLE BUSINESS BASE / CORE SERVICES PRODUCTS INFRA PRODUTOS DE OUTRAS EMPRESAS ??? Google Account File Storage Email Drive Photos
  • 17.
  • 18.
    Compor uma plataforma envolve muitostemas 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 MINHAEMPRESA 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
  • 20.
  • 21.
    PRODUTOS DA MINHAEMPRESA 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 organizadosa 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 MINHAEMPRESA 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 foconã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 MINHAEMPRESA 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 MINHAEMPRESA 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-seevitar 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 MINHAEMPRESA 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 MINHAEMPRESA 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 microservicepossui 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 MINHAEMPRESA 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 MINHAEMPRESA 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-seevitar 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 MINHAEMPRESA 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 Umaplataforma 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 MINHAEMPRESA 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, maisque 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 MINHAEMPRESA 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 MINHAEMPRESA 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 MINHAEMPRESA 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 ➔ Aorganizaçã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 nascamadas, 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 MINHAEMPRESA 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 ➔ Diagramausando C4Model ➔ O Diagrama é utilizado para planejar e depois implementar
  • 45.
    Domain Microservices Business Microservices Business Microservices Core External Services Microservice external services EventBus Applicatoin API Gateway BFF FrontEnds Centralized Data User Interface Other Products
  • 46.
    Compor uma plataforma commicroservices vai muito além da fragmentação de um software em pequenos serviços.
  • 47.
    Isaac Felisberto deSouza 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