como ddd e principalmente domain model...2021/03/24 · 筐撚uais contextos e entidades? eric...
TRANSCRIPT
![Page 1: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/1.jpg)
Como DDD e principalmente Domain Model
contribuem na construção de microservices.
Isaac Felisberto de SouzaEngenheiro de Software
![Page 2: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/2.jpg)
JOGO RÁPIDO!
RESPONDA APENAS
SE FOR
SIM
➔ Quem conhece DDD?
➔ Quem utiliza microservices?
➔ Quem aplica DDD em microservices?
![Page 3: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/3.jpg)
ROTEIRO DE HOJE!
1 VISÃO GERAL SOBRE DDD.
2 FALHAS COMUNS NO USO DE DDD.
3 APLICANDO DDD EM MICROSERVICES!
![Page 4: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/4.jpg)
VISÃO GERAL SOBRE DDD
![Page 5: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/5.jpg)
➔ Eric Evans ➔ Publicado em 2004.➔ Possui 450+ páginas.
![Page 6: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/6.jpg)
Organização por Camadas
➔ User Interface: Apresentar e interpretar comandos do usuário ou outro sistema.
➔ Application: Funções que são executadas pelo Software.
➔ Domain: Regras de negócio.
➔ Infrastructure: Recursos técnicos genéricos
![Page 7: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/7.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia Designed by pch.vector / Freepik
![Page 8: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/8.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
➔ Qual o domínio do negócio?
➔ Quais contextos e entidades?
Eric Evans diz que:
“O coração do software está na sua capacidade de resolver problemas relacionados ao domínio…”
“... É preciso afiar sua capacidade de modelagem e dominar o design de domínios.”
(entidades não são as tabelas de um banco de dados)
![Page 9: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/9.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
Quem?
➔ Profissionais na gestão e negócio.
➔ Designers.
➔ Desenvolvedores(as).
➔ Times de Operação.
➔ Time de Suporte.
O uso de uma linguagem universal.
![Page 10: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/10.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemiamartinfowler.com
![Page 11: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/11.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
A porta do banco travou.
Qual o significado da palavra Banco?
Chegando na praça, sente no banco e aguarde
Estou esperando em frente ao banco da praça.
Agência ou Instituição Bancária
![Page 12: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/12.jpg)
Domain Model
Ubiquitous Language+
Bounded Context+
Polissemia
![Page 13: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/13.jpg)
FALHAS COMUNS NO USO DE DDD
![Page 14: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/14.jpg)
EM MONÓLITOS
![Page 15: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/15.jpg)
Normalmente focam apenas nas camadas!
➔ Regra de negócio não está apenas em Domain.
➔ Domain não organizados por contextos.
➔ Pouca clareza sobre conceitos do domínio.
➔ Múltiplos termos/palavras para coisas iguais.
![Page 16: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/16.jpg)
EM MICROSERVICES
![Page 17: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/17.jpg)
Microservices abandonam a
organização de camadas.
➔ Não há visão de contextos.
➔ Cada microservice utiliza suas nomenclaturas.
➔ Não há clareza sobre dependências.
➔ Frontend acessa direto todos microservices.
➔ Inconsistências nos Contratos de API’s.
![Page 18: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/18.jpg)
APLICANDO DDD EM MICROSERVICES
![Page 19: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/19.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
“O coração do software…”
A solução deve possuir um modelo de domínio!
Uma solução fictícia, chamada Guia Hóspede,o domínio é: RESERVA DE HOTÉIS.
![Page 20: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/20.jpg)
Modelo de domínio do Guia Hóspede
![Page 21: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/21.jpg)
QUAL O TAMANHO
DE UM MICROSERVICE?➔ As entidades determinam os contratos das API’s.
➔ O modelo indica as dependências.
➔ Contextos indicam a fragmentação inicial de microservices.
![Page 22: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/22.jpg)
Domain Model
➔ Entidades fracas não precisam ser isoladas em um microservice.
⚠ Cuidado com excesso de fragmentação. ⚠➔ Um microservice para esse contexto é aceitável.
![Page 23: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/23.jpg)
Domain Model
➔ Hotel é a entidade forte, terá um microservice.
➔ Acomodação também é uma entidade forte.
Acomodação...
➔ Inicia no microservice de hotéis.
➔ Quando precisar de escala, será segregada.
![Page 24: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/24.jpg)
Domain Model
➔ Hóspede parece uma entidade forte, mas...
➔ O contexto foca na estadia, um microservice para o contexto é aceitável.
![Page 25: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/25.jpg)
Domain Model
➔ Mais importante que o tamanho do microservice, é o contexto.
➔ As dependências entre microservices seguem o modelo de domínio.
➔ O modelo ajuda a compreender possíveis evoluções.
➔ Os microservices explicitam melhor o domínio de negócio.
hoteis-service stays-service
accounts-service
accommodations-service
![Page 26: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/26.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
Todos utilizam uma linguagem universal!
O nome de contextos, entidades e atributos é utilizada em:
➔ Nome dos microservices e Contrato das API’s.
➔ Modelagem da persistência de dados.
➔ Artefatos distribuídos.
➔ Endereço dos Endpoints.
➔ Mapeamentos de monitoramento.
➔ No diálogo entre integrantes do projeto/empresa.
![Page 27: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/27.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
Microservices respeitam os limites de cada contexto!
➔ Informação adequada ao o contexto.
➔ Dependência fraca entre entidades.
➔ Conta é uma entidade genérica. (Hotéis e usuários).
➔ Dados específicos para conta de hotéis no contexto de hotéis.
➔ A chave entre entidades é um UUID, ou “strings humanizadas”.
![Page 28: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/28.jpg)
Domain Model
Ubiquitous Language
Bounded Context
Polissemia
Nomenclaturas não geram dúvidas!
➔ Conta, é a representação genérica.
➔ Conta de Parceiros, dados adicionais de contas de hotéis.
➔ Reserva, é Reserva de Estadias.
![Page 29: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/29.jpg)
CAMADAS DO DDD
NO CONJUNTO DE
MICROSERVICES
![Page 30: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/30.jpg)
➔ Adoção de API Gateway.
➔ Frontend ou sistemas externos acessam o API Gateway.
➔ API’s mapeadas no gateway respeitam o modelo de domínio.
➔ O API Gateway -> Application LayerRepresentação da
Application Layer
![Page 31: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/31.jpg)
➔ Agrupados por domínio/contexto.
➔ Uso de um Core Domain.
Os microservices
representam a
Domain Layer
![Page 32: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/32.jpg)
Arquitetura Orientada a Eventos
possibilita uso deDOMAIN EVENTS
➔ Schemas seguem o modelo de domínio.
➔ Nomenclatura de filas seguem as entidades.
➔ Agrupamentos lógicos seguem os contextos.
![Page 33: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/33.jpg)
![Page 34: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/34.jpg)
Domain Model Ubiquitous LanguageBounded ContextPolissemia
Organizados com:ApplicationDomains
![Page 35: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/35.jpg)
MICROSERVICES ORGANIZADOS,COM MENOR ACOPLAMENTO, MAIOR COESÃO
E FOCADOS NO NEGÓCIO.
OBRIGADO!
![Page 36: Como DDD e principalmente Domain Model...2021/03/24 · 筐撚uais contextos e entidades? Eric Evans diz que: 窶廾 coraテァテ」o do software estテ。 na sua capacidade de resolver](https://reader035.vdocuments.site/reader035/viewer/2022070221/61393a87a4cdb41a985b9157/html5/thumbnails/36.jpg)
Isaac Felisberto de SouzaEngenheiro de Software
linkedin.com/in/isaacfsouza
Um guia para auxiliar oDesenvolvimento de Software.
Através de conteúdo para desenvolvedores(as).
www.guia.dev
Guia Dev (linkedin.com/company/guiadev)
@guia_dev
Siga! e compartilhe ;-)