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

[TDC SP 2025] Então você quer ser um praticante...

[TDC SP 2025] Então você quer ser um praticante de DDD

Entenda do que se trata o DDD, as partes fundamentais, design estratégico e tático, e quais os próximos passos para se tornar um praticante de DDD.

Avatar for Talysson de Oliveira Cassiano

Talysson de Oliveira Cassiano

September 17, 2025
Tweet

More Decks by Talysson de Oliveira Cassiano

Other Decks in Programming

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. Mapeamento de contextos - 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 - Contextos que se dependem mutuamente - Contextos que suportam múltiplos outros contextos - Contextos que dependem unilateralmente de outros - Contextos que nunca precisam interagir entre si - Muitas vezes a natureza dessa relação pode ser inclusive não-técnica - Ex.: serviço terceirizado de processamento de pagamentos
  6. Por favor, não achem que DDD é o só o

    que falaremos daqui pra frente ⚠
  7. Modelo Sistema de abstrações que descrevem aspectos específicos do domínio,

    usado para resolver problemas relacionados ao domínio
  8. id: 42 status: pending shippingAddress: Rua ABC estimatedDelivery: 10/10/2025 id:

    42 status: pending shippingAddress: Av. XYZ estimatedDelivery: 10/10/2025 Pedido #42 t
  9. id: 42 status: pending shippingAddress: Rua ABC estimatedDelivery: 10/10/2025 id:

    42 status: shipped shippingAddress: Av. XYZ estimatedDelivery: 11/11/2025 Pedido #42 t id: 42 status: pending shippingAddress: Av. XYZ estimatedDelivery: 10/10/2025
  10. id: 42 status: pending shippingAddress: Rua ABC estimatedDelivery: 10/10/2025 id:

    42 status: shipped shippingAddress: Av. XYZ estimatedDelivery: 11/11/2025 Pedido #42 t id: 42 status: pending shippingAddress: Av. XYZ estimatedDelivery: 10/10/2025 Identidade + ciclo de continuidade = Entidade (entity)
  11. red: 255 green: 0 blue: 0 Vermelho red: 255 green:

    0 blue: 255 Rosa red: 110 green: 200 blue: 80 Verde
  12. red: 255 green: 0 blue: 0 Vermelho red: 255 green:

    0 blue: 255 Rosa red: 110 green: 200 blue: 80 Verde Ausência de identidade + significado proveniente dos valores dos atributos = Objeto de valor (value object)
  13. id status shippingAddress estimatedDelivery Pedido color carId tires Personalizações airConditioner

    mediaPlayer Extras paymentMethod totalPrice Pagamento Entidade principal + fronteira de consistência conceitual = Agregado (aggregate) Raiz do agregado (aggregate root)
  14. buscar pedido por id buscar pedidos por status Ações de

    interesse do domínio persistir um pedido Pedido (agregado)
  15. buscar pedido por id buscar pedidos por status Ações de

    interesse do domínio Agregados que requerem acesso direto + conjunto de ações de persistência de interesse do domínio = Repositório (repository) persistir um pedido Pedido (agregado)
  16. = Repositório (repository) OrderRepository + findById(id) + findAllByStatus(status) + store(pedido)

    Agregados que requerem acesso direto + conjunto de ações de persistência de interesse do domínio
  17. Próximos passos 1. Certifique-se que entendeu que DDD não é

    primariamente sobre código 2. Não busque atalhos, fuja do suposto "DDD lite" 3. Leia o minibook DDD Quickly <infoq.com/minibooks/domain-driven-design-quickly> 4. Assista a talk "7 Reasons Why DDD Projects Fail", Greg Young <vimeo.com/13824218> 5. Aprenda a base de maneira sólida, não faça isso com pressa - Domain-Driven Design, Eric Evans (the blue book) ou Learning Domain-Driven Design, Vlad Khononov 6. Pratique! 7. Aprofunde os conhecimentos - Implementing Domain-Driven Design, Vaughn Vernon (the red book) 8. Pratique, não busque atalhos, e fuja do suposto "DDD lite"!