devterview_$ iniciar simulação

Onde traçar a fronteira entre módulos/serviços

DifícilSêniorDesign de sistema

Pergunta

Ao dividir um sistema em módulos ou serviços, qual é um bom critério pra onde cortar — e um critério ruim?

Resposta esperada

Bom critério: cortar por CAPACIDADE DE NEGÓCIO / subdomínio — 'cobrança', 'catálogo', 'entrega' — onde cada fronteira encapsula um vocabulário e um conjunto de regras coeso, muda por razões próprias, e tem uma interface pequena com o resto (poucos dados atravessam). Bounded contexts do DDD. Sinal de fronteira boa: você consegue descrever o que ela faz sem citar as outras, e uma mudança típica fica dentro de uma. Critério ruim: cortar por CAMADA TÉCNICA ('serviço de banco', 'serviço de lógica', 'serviço de API') — toda feature atravessa todos os serviços, você troca acoplamento local por chamadas de rede, e ganhou complexidade sem ganhar independência. Outro ruim: cortar cedo demais, por adivinhação, antes de entender o domínio — a fronteira errada é caríssima de mover depois.

Por que perguntam isso

Pergunta sênior. Termos: 'bounded context', 'capacidade de negócio'. O anti-padrão a nomear: serviços por camada técnica.

#bounded-context#ddd#fronteiras
publicidade

Relacionadas