Atualmente fala-se muito em soluções de software em uma visão de plataforma! Contudo uma plataforma contempla muitos aspectos que vão além da simples utilização do termo ou ainda apenas escolher uma arquitetura como microservices. Plataforma inclui coisas como: visão de DDD, arquiteturas distribuídas e orientadas a eventos, BFF (backend for frontend), DOMA , API Gateways/Manager, modelagem e distribuição dos dados, visão de camadas de produto, serviços e core, APIs, dependências, integrações, organização de times, etc. Na apresentação será abordado como cada tema deste se relaciona e formas de organizar e representar estes conceitos a fim de compor de fato uma plataforma de software.
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
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