1 of 47

Olá, pessoas!

Trilha Microservices

2 of 47

JOGO RÁPIDO!

Participantes online podem responder

“Sim” no chat!

  • Quem utiliza microservices no dia a dia?

3 of 47

Compondo uma plataforma de software

com microservices.

Isaac Felisberto de Souza

Engenheiro de Software

4 of 47

ROTEIRO

DE HOJE!

1

Evolução do software

até o modelo de plataforma.

2

Compondo uma plataforma!

5 of 47

Evolução do software

até o modelo de plataforma.

1

6 of 47

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 of 47

2000’s

Software (web) rodando na rede da empresa

e com acesso externo

www.minhaempresa.com/sistema

8 of 47

2015+

SaaS

SOFTWARE

COMO SERVIÇO

2010’s

Software rodando

na CLOUD com acesso em qualquer lugar do mundo

www.sistema.com/minhaempresa

9 of 47

SaaS

Software as a Service

10 of 47

Software SaaS

é um modelo plataforma?

Não :-)

11 of 47

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 of 47

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 of 47

14 of 47

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

15 of 47

Exemplo de

plataforma

16 of 47

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

17 of 47

Compondo uma plataforma!

2

18 of 47

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 of 47

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

20 of 47

DDD

(Domain Driven Design)

21 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

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 of 47

Representar visualmente a plataforma

  • Diagrama usando C4Model
  • O Diagrama é utilizado para planejar e depois implementar

45 of 47

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 of 47

Compor uma plataforma

com microservices

vai muito além da fragmentação

de um software em pequenos serviços.

47 of 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