Trilha de estudo
Trilha Design Orientado ao Domínio: tudo o que estudar, tópico por tópico
Avaliação abrangente de Domain-Driven Design cobrindo linguagem ubíqua, contextos delimitados, padrões táticos, modelagem de domínio, event sourcing, CQRS e práticas avançadas de DDD em microsserviços.
Resposta curta
Para aprender Design Orientado ao Domínio, percorra 6 módulos e 26 tópicos na ordem em que um apoia o próximo. Comece por Fundamentos de DDD e siga para Design Estratégico e Padrões Táticos. Use o mapa como checklist, ou meça seu nível e estude só o que falta.
O que você vai estudar
Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.
1 · Fundamentos de DDD5 tópicos
Linguagem Ubíqua
A linguagem compartilhada entre desenvolvedores e especialistas de domínio que permeia código e conversas.
Objetivos
- Construir um glossário de linguagem ubíqua com especialistas de domínio
- Identificar deriva de linguagem entre código e conversa de negócios
Conceitos-chave
- linguagem ubíqua
- especialista de domínio
- glossário de domínio
- deriva de linguagem
- modelo de linguagem
- evolução da linguagem
- código expressivo
Contextos Delimitados
Fronteiras explícitas dentro das quais um modelo de domínio é aplicado de forma consistente.
Objetivos
- Identificar contextos delimitados em um sistema legado de grandes proporções
- Desenhar as fronteiras entre dois contextos delimitados que compartilham um conceito
Conceitos-chave
- contexto delimitado
- fronteira explícita
- modelo de contexto
- linguagem ubíqua por contexto
- integração entre contextos
- mapa de contextos
- independência de implantação
Subdomínios
Particionamento do espaço do problema em domínio central, subdomínios de suporte e subdomínios genéricos.
Objetivos
- Classificar subdomínios de um sistema de e-commerce em central, suporte e genérico
- Justificar decisões de build vs buy com base na classificação de subdomínio
Conceitos-chave
- domínio central
- subdomínio de suporte
- subdomínio genérico
- espaço do problema
- espaço da solução
- investimento estratégico
- solução pronta
Pensamento Estratégico em DDD
Aplicar DDD estratégico para alinhar decisões de software a vantagens competitivas de negócio.
Objetivos
- Identificar o domínio central de uma startup de fintech
- Usar subdomínios para priorizar onde investir modelagem rica de domínio
Conceitos-chave
- vantagem competitiva
- diferenciação central
- investimento estratégico
- complexidade acidental vs essencial
- alinhamento time-contexto
- mapa de capacidades
- priorização de domínio
Domain Storytelling
Técnica colaborativa para capturar conhecimento de domínio através de narrativas ilustradas.
Objetivos
- Conduzir uma sessão de domain storytelling para um fluxo de checkout
- Identificar bounded contexts a partir de pictogramas de domain storytelling
Conceitos-chave
- domain storytelling
- ator de domínio
- objeto de trabalho
- atividade de domínio
- pictograma
- foco puro vs digitalizado
- granularidade da história
2 · Design Estratégico5 tópicos
Padrões de Mapeamento de Contextos
Padrões que descrevem os relacionamentos e formas de integração entre contextos delimitados.
Objetivos
- Selecionar o padrão de mapeamento correto para dois contextos com dinâmicas de equipe distintas
- Implementar uma camada anticorrupção para proteger o domínio central de um sistema legado
Conceitos-chave
- camada anticorrupção
- serviço de host aberto
- linguagem publicada
- conformista
- parceria
- núcleo compartilhado
- cliente-fornecedor
Event Storming de Grande Escala
Workshop colaborativo para modelar domínios complexos descobrindo eventos, comandos e agregados.
Objetivos
- Facilitar um event storming de grande escala para um domínio de pedidos
- Identificar hotspots e agregados candidatos a partir de um mapa de event storming
Conceitos-chave
- evento de domínio
- comando
- agregado
- política
- ator externo
- hotspot
- fluxo de evento
Relacionamentos Cliente-Fornecedor
Padrão onde um contexto upstream influencia o downstream, com dinâmicas de poder explícitas.
Objetivos
- Identificar relacionamentos cliente-fornecedor em um mapa de contextos corporativo
- Projetar um protocolo de testes de aceitação entre contextos upstream e downstream
Conceitos-chave
- upstream
- downstream
- fornecedor
- cliente
- planejamento colaborativo
- testes de aceitação
- poder de negociação
Serviço de Host Aberto e Linguagem Publicada
Exposição de funcionalidade de um contexto via protocolo bem definido e documentado.
Objetivos
- Projetar um Serviço de Host Aberto para um contexto de pagamentos usado por três equipes
- Distinguir quando usar OHS vs Camada Anticorrupção na integração entre contextos
Conceitos-chave
- serviço de host aberto
- linguagem publicada
- API pública
- múltiplos consumidores
- estabilidade de protocolo
- versionamento
- documentação de API
Destilação do Domínio Central
Identificar e isolar o domínio central que diferencia o negócio para concentrar esforços de modelagem.
Objetivos
- Escrever uma declaração de posição central para um sistema de recomendação
- Separar o mecanismo genérico do domínio central em um contexto de logística
Conceitos-chave
- domínio central
- declaração de posição central
- mecanismo genérico
- subdomínio central segregado
- mapa de domínio destacado
- visão de domínio
- investimento em modelagem
3 · Padrões Táticos6 tópicos
Entidades e Objetos de Valor
Distinção entre objetos com identidade única (entidades) e objetos definidos por seus atributos (objetos de valor).
Objetivos
- Classificar conceitos de domínio como entidade ou objeto de valor com justificativa
- Implementar um objeto de valor Dinheiro imutável com igualdade semântica
Conceitos-chave
- entidade
- objeto de valor
- identidade de entidade
- imutabilidade de objeto de valor
- igualdade por valor
- igualdade por identidade
- substituição de objeto de valor
Agregados e Raízes de Agregado
Clusters de entidades e objetos de valor tratados como uma unidade de consistência com uma raiz de acesso.
Objetivos
- Identificar a raiz de agregado correta para um cluster de objetos de domínio
- Aplicar a regra de uma transação por agregado em um cenário de pedido com itens de linha
Conceitos-chave
- agregado
- raiz de agregado
- fronteira de agregado
- invariante de consistência
- referência por ID
- uma transação por agregado
- proteção de invariante
Eventos de Domínio
Fatos imutáveis que representam algo significativo que ocorreu no domínio.
Objetivos
- Nomear eventos de domínio seguindo a convenção de tempo passado do DDD
- Publicar um evento de domínio após uma transição de estado de agregado
Conceitos-chave
- evento de domínio
- imutabilidade de evento
- nomeação de evento
- publicação de evento
- manipulador de evento
- consistência eventual via eventos
- event sourcing
Serviços de Domínio
Operações de domínio que não pertencem naturalmente a nenhuma entidade ou objeto de valor.
Objetivos
- Identificar quando uma operação de domínio pertence a um serviço de domínio vs entidade
- Nomear e posicionar corretamente um serviço de domínio em um modelo em camadas
Conceitos-chave
- serviço de domínio
- operação sem estado
- orquestração de domínio
- coordenação entre agregados
- nome baseado em domínio
- evitar engorda de serviço
- distinção camada de aplicação vs domínio
Repositórios
Abstração de coleção para persistir e recuperar agregados, ocultando detalhes de armazenamento.
Objetivos
- Projetar uma interface de repositório que expresse consultas orientadas ao domínio
- Explicar por que repositórios são definidos por raiz de agregado, não por entidade
Conceitos-chave
- repositório
- abstração de coleção
- ignorância de persistência
- repositório por raiz de agregado
- métodos de consulta orientados ao domínio
- interface de repositório
- unidade de trabalho
Fábricas
Encapsulamento de lógica de criação complexa para garantir que agregados sejam criados em estado válido.
Objetivos
- Implementar uma fábrica que enforce invariantes de domínio na criação de agregado
- Distinguir fábrica de criação de fábrica de reconstituição
Conceitos-chave
- método fábrica
- objeto fábrica
- invariante de criação
- criação encapsulada
- fábrica de reconstituição
- montagem complexa
- criação de agregado
4 · Modelagem de Domínio4 tópicos
Princípios de Design de Agregados
Heurísticas para dimensionar e definir fronteiras de agregados que protegem invariantes com custo mínimo.
Objetivos
- Aplicar heurísticas de tamanho de agregado para dividir um agregado grande
- Justificar por que dois agregados devem ser separados mesmo compartilhando dados
Conceitos-chave
- tamanho de agregado
- uma transação por agregado
- heurísticas de fronteira
- pequenos agregados
- consistência eventual entre agregados
- referência por ID
- raiz de proteção de invariante
Aplicação de Invariantes
Garantir que o modelo de domínio sempre esteja em um estado válido fazendo valer invariantes no ponto de mudança.
Objetivos
- Implementar cláusulas de guarda em um método de agregado para aplicar invariantes de negócio
- Debater modelo sempre válido vs modelo defer-validation com trade-offs
Conceitos-chave
- invariante de domínio
- modelo sempre válido
- cláusula de guarda
- exceção de domínio
- validação adiada vs imediata
- proteção de invariante de agregado
- violação de regra de negócio
Padrão Specification
Predicados de domínio combináveis que encapsulam lógica de consulta e regras de negócio.
Objetivos
- Implementar uma Specification para filtrar pedidos elegíveis a desconto
- Compor especificações usando And/Or/Not para regras de negócio complexas
Conceitos-chave
- especificação
- predicado composto
- AndSpecification
- OrSpecification
- NotSpecification
- consulta de domínio
- specification por repositório
Modelo Anêmico vs Modelo Rico
Contraste entre modelos de dados sem comportamento (anêmicos) e modelos com lógica de domínio encapsulada (ricos).
Objetivos
- Identificar um modelo anêmico e migrar comportamento de volta ao domínio
- Explicar por que 'tell don't ask' é a regra de ouro do modelo rico
Conceitos-chave
- modelo de domínio anêmico
- modelo de domínio rico
- tell don't ask
- comportamento em objeto de domínio
- lógica em camada de serviço
- encapsulamento
- violação de encapsulamento
5 · Event Sourcing e CQRS4 tópicos
Fundamentos de Event Sourcing
Armazenar estado como uma sequência de eventos imutáveis em vez de estado atual.
Objetivos
- Derivar o estado atual de um agregado a partir de uma sequência de eventos
- Implementar uma estratégia de snapshot para evitar replay de milhares de eventos
Conceitos-chave
- event sourcing
- event store append-only
- estado derivado de eventos
- replay de eventos
- versionamento de eventos
- evolução de schema de evento
- snapshot
Padrão CQRS
Separação do lado de escrita (comandos) do lado de leitura (consultas) para otimizar independentemente.
Objetivos
- Projetar um sistema CQRS para um catálogo de produtos com alta carga de leitura
- Explicar quando CQRS é e quando NÃO é uma boa escolha
Conceitos-chave
- CQRS
- lado de comando
- lado de consulta
- modelo de leitura
- manipulador de comando
- manipulador de consulta
- bancos de dados separados leitura/escrita
- consistência eventual entre lados
Event Store e Projeções
Implementação de armazenamento de eventos e criação de projeções a partir de streams de eventos.
Objetivos
- Projetar um esquema de event store com versionamento e detecção de conflitos
- Construir uma projeção de modelo de leitura a partir de um stream de eventos de pedido
Conceitos-chave
- event store
- stream de eventos
- bloqueio otimista com versão
- construção de projeção
- replay de event store
- EventStoreDB
- stream global vs stream por agregado
Consistência Eventual em DDD
Gerenciar a janela de inconsistência entre eventos publicados e modelos de leitura atualizados.
Objetivos
- Projetar uma estratégia UX para janelas de consistência eventual em checkout
- Implementar leitura de seus próprios writes usando cache de lado do cliente
Conceitos-chave
- consistência eventual
- lag de modelo de leitura
- eventos compensatórios
- consistência eventual em saga
- consistência percebida pelo usuário
- janela de consistência
- leitura de seus próprios writes
6 · DDD na Prática2 tópicos
DDD com Microsserviços
Aplicar princípios de DDD para guiar decomposição e integração de microsserviços.
Objetivos
- Mapear contextos delimitados para fronteiras de microsserviços em um sistema de e-commerce
- Projetar integração entre serviços usando eventos de domínio e CAL
Conceitos-chave
- um contexto por serviço
- riscos de núcleo compartilhado
- CAL na fronteira do serviço
- integração orientada a eventos
- saga entre serviços
- linguagem publicada
- autonomia de serviço
Antipadrões de DDD e Refatoração
Reconhecer e corrigir os antipadrões mais comuns que violam princípios de DDD.
Objetivos
- Identificar três antipadrões de DDD em uma base de código existente
- Propor um plano de refatoração para migrar de transaction scripts para modelo de domínio rico
Conceitos-chave
- deus agregado
- modelo de domínio anêmico
- antipadrão Smart UI
- transaction script
- feature envy
- lógica de domínio em serviço de aplicação
- anemia orientada a serviço
Níveis: Júnior, Pleno e Sênior
Explique com suas palavras
Corrigido por IA · sem cadastro · 1 perguntaSem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.
Já estuda Design Orientado ao Domínio?
A avaliação mede tópico por tópico, e o plano pula o que você já sabe.
Aberto para ler. A conta só é necessária para ser medido.
Perguntas frequentes
Por onde começar a estudar Design Orientado ao Domínio?
Comece por Fundamentos de DDD: Linguagem Ubíqua, Contextos Delimitados e Subdomínios. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.
Quanto tempo leva uma avaliação completa de Design Orientado ao Domínio?
Uma avaliação completa desta trilha leva cerca de 60 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.
Preciso de conta para usar esta página?
Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.