Quando lidamos com sistemas complexos, um dos maiores desafios é compreender o negócio de forma organizada. O Domain-Driven Design (DDD) propõe que, antes mesmo de pensar em código, precisamos entender profundamente o domínio — ou seja, o problema central que o software deseja resolver. Dentro desse domínio, existem partes menores e especializadas: os subdomínios.
Vaughn Vernon, em Domain-Driven Design Destilado, reforça que identificar subdomínios é um dos passos fundamentais para criar sistemas coerentes, expressivos e mais fáceis de evoluir.
Por que subdomínios existem?
Um negócio de verdade não é monolítico. Ele é composto por diversas capacidades, processos e responsabilidades distintas. Os subdomínios representam exatamente isso: segmentos do negócio que possuem objetivos e regras próprias.
Dividir o domínio em subdomínios ajuda a enxergar melhor as partes importantes, reduz confusões conceituais e prepara o terreno para decisões arquiteturais melhores — como os Bounded Contexts.
Três tipos de subdomínios
Vaughn Vernon destaca três categorias que ajudam a entender o papel de cada parte do negócio:
1. Subdomínio Core (Core Domain)
É o coração do negócio, aquilo que realmente diferencia a empresa no mercado.
É onde você investe mais esforço de modelagem, especialistas do negócio e design cuidadoso.
Exemplo:
Em uma plataforma de investimentos, o “motor de cálculo de risco e rentabilidade” pode ser o core domain. É a inteligência que torna a plataforma melhor que a concorrência.
2. Subdomínios de Suporte (Supporting Subdomains)
São importantes para que o core funcione bem, mas não representam diferencial competitivo.
Têm regras próprias, mas servem principalmente para dar sustentação ao core.
Exemplo:
Ainda na plataforma de investimentos, áreas como “gestão de clientes” ou “atualização cadastral” são essenciais, porém não definem inovação. São processos que precisam estar corretos, mas não precisam de modelagem profunda como o core.
3. Subdomínios Genéricos (Generic Subdomains)
São capacidades que quase todo negócio precisa e não valem o esforço de reinventar.
Normalmente são resolvidos com bibliotecas, frameworks ou serviços já existentes.
Exemplo:
Autenticação, envio de notificações por e-mail, controle de acesso.
Faz sentido usar soluções consolidadas em vez de construir tudo do zero.
Como identificar subdomínios na prática?
A análise começa conversando com especialistas do negócio, entendendo processos reais e observando onde estão as diferenças de linguagem, objetivos e regras. Subdomínios costumam aparecer quando:
- uma parte do negócio tem linguagem própria (“risco”, “perfil”, “vector de exposição” são típicos do domínio financeiro)
- o processo tem etapas e decisões específicas
- a responsabilidade daquela área é clara e independente das demais
O segredo é olhar para o negócio como um mapa: cada região desse mapa é um subdomínio com fronteiras conceituais claras.
Exemplos de subdomínios em diferentes áreas
E-commerce
- Core: estratégia de precificação, recomendação de produtos
- Suporte: catálogo, inventário, pagamentos
- Genérico: autenticação, geração de boletos, envio de e-mails
Aplicativo de entrega
- Core: sistema de roteamento inteligente e previsão de entrega
- Suporte: cadastro de restaurantes, avaliações
- Genérico: login, monitoramento de logs
Banco digital
- Core: motor de aprovação de crédito, análise de risco
- Suporte: abertura de conta, operações de cartões
- Genérico: envio de SMS, verificação de identidade via terceiros
Esses exemplos mostram que o “core” nunca é o sistema inteiro, mas sim aquele pedaço onde a empresa se diferencia.
Subdomínio não é Bounded Context
É comum confundir os dois, mas eles têm papéis diferentes:
- Subdomínio → existe no negócio
- Bounded Context → existe na modelagem do software
Ou seja, primeiro entendemos o negócio por meio de subdomínios; depois, ao transformar isso em software, criamos bounded contexts para representar esses conceitos dentro de limites claros.
Conclusão
Subdomínios são a primeira grande divisão lógica dentro do domínio de um negócio. Eles ajudam a enxergar prioridades, planejar melhor o design e decidir onde vale investir mais esforço. Seguindo o raciocínio de Vaughn Vernon, reconhecer o que é core, o que é suporte e o que é genérico permite que a equipe concentre energia naquilo que realmente importa e simplifique o que pode ser reaproveitado.
Dominar esse conceito é abrir caminho para aplicar o restante do DDD com muito mais clareza e propósito — especialmente quando chega o momento de definir bounded contexts e arquiteturas alinhadas ao domínio.


