Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[DDD Brasil] Então você quer ser um praticante ...

[DDD Brasil] Então você quer ser um praticante de DDD

Aprenda do que o DDD se trata e de onde parte seus conceitos fundamentais: a modelagem estratégica.

Avatar for Talysson de Oliveira Cassiano

Talysson de Oliveira Cassiano

September 12, 2025
Tweet

More Decks by Talysson de Oliveira Cassiano

Other Decks in Technology

Transcript

  1. - DDD só adiciona complexidade desnecessária no código - DDD

    é um tipo de arquitetura de software - DDD é uma forma de organizar pastas e arquivos - Aplicações que aplicam DDD tem arquivos demais - Para usar DDD tem que usar um monte de design patterns - DDD torna o código difícil de entender - Nunca precisei usar DDD pro meu software funcionar - …
  2. "O coração de um software é sua habilidade de resolver

    problemas relacionados ao domínio para seus usuários" Domain-Driven Design - Eric Evans
  3. Domínio - Finanças - Saúde - Educação - Comércio -

    Aviação - Mineração - Transporte - … Problema Sistema de abstrações que descrevem aspectos específicos do domínio, usado para resolver problemas relacionados ao domínio Modelo
  4. DDD é uma abordagem de desenvolvimento onde: - Focamos no

    domínio - Exploramos modelos colaborativamente entre especialistas de domínio e de desenvolvimento - Falamos uma linguagem ubíqua
  5. Integração contínua (continuous integration) - Mesmo em contextos bem definidos,

    trabalhar em time incorre na tendência de fragmentação do modelo - Não temos ferramentas que nos permitam testar e garantir a corretude puramente do modelo - O processo de Integração Contínua é baseado na integração de conceitos no modelo, que eventualmente se torna concreta através do código - O código, como expressão e implementação do modelo, pode ser testado!
  6. Mapeamento de contextos (context mapping) - Definição dos pontos de

    contato entre modelos, delimitando mecanismos de compartilhamento, isolamento e influência entre eles - Descoberta das relações entre os contextos que impõe restrições na natureza do modelo ou no ritmo viável para mudanças - Muitas vezes a natureza dessa relação pode ser inclusive não-técnica - Ex.: serviço terceirizado de processamento de pagamentos
  7. Upstream e downstream - Relação entre dois contextos onde: -

    As ações de contexto em upstream afetam o sucesso do contexto em downstream - Mas o contexto em downstream não afeta significativamente aquele em upstream - Exemplo: - Duas cidades na descida de um rio - A poluição da cidade mais acima (upstream) afeta a cidade mais abaixo (downstream) - A poluição da cidade mais abaixo tem pouco ou nenhum efeito na cidade acima
  8. Linguagem publicada (published language) - A forma com que um

    contexto define como a comunicação com ele é feita - Uma linguagem compartilhada entre o modelo e seu(s) cliente(s) - Frequentemente expressada através de padrões de troca de dados: - JSON + REST (+ Swagger) - JSON + GraphQL - Protobuf + gRPC - AMQP + eventos documentados - XML + SOAP
  9. Camada anticorrupção (anticorruption layer) - Interface através da qual será

    feita a tradução entre os modelos de dois contextos que se comunicam - Protege o contexto em downstream de não ser corrompido pelo upstream - Esta camada conhece a Linguagem Publicada do contexto em upstream - A tradução é feita tanto para entrada quanto saída de dados - Exemplos: - Classes de mapeamento/adapters - Wrappers em volta de SDKs, clients de APIs e consumers de eventos
  10. Open Host Service Customer Customer Depende Depende Upstream Downstream Downstream

    Published language Anticorruption layer Anticorruption layer
  11. Partner Partner Coopera e depende Coopera e depende Upstream &

    Downstream Upstream & Downstream Published language Published language Anticorruption layer Anticorruption layer