O Que é um Bounded Context? Traçando as Linhas Entre Modelos
Um bounded context é uma fronteira dentro da qual um domain model específico se aplica e cada termo tem um significado único e inequívoco.
Um conceito do domain-driven design, um bounded context é a resposta a um problema recorrente: a mesma palavra significa coisas diferentes em partes diferentes de um negócio. Um "customer" em billing não é o mesmo modelo que um "customer" em support. Um bounded context traça uma linha explícita para que cada modelo permaneça consistente dentro dele, e essa linha é muitas vezes exatamente onde você divide serviços e pipelines.
Uma fronteira ao redor de um modelo
Dentro de um bounded context, um domain model é internamente consistente e cada termo tem um significado. Entre contextos, a mesma palavra pode mapear para um modelo diferente. O contexto é o escopo dentro do qual o modelo e sua linguagem são inequívocos.
Por que importa
- Previne um único modelo emaranhado que tenta significar tudo.
- Dá aos times um ownership claro de uma fatia coerente do domínio.
- Faz emergir uma costura natural para dividir serviços.
- Torna a tradução entre modelos explícita em vez de acidental.
Onde as fronteiras caem
Bounded contexts muitas vezes mapeiam para times, serviços e deployment units. Uma fronteira de contexto bem escolhida tende a formar uma fronteira de microservice limpa, porque minimiza o acoplamento e a tradução necessários através da linha.
Tradução entre contextos
Quando dois contextos precisam conversar, eles traduzem através de um contrato explícito, uma API ou event schema, mapeando o modelo de um contexto para o outro. Essa camada de tradução é exatamente o API contract que os contract tests do CI verificam.
A conexão com CI/CD
Boas fronteiras de contexto alinham ownership, serviços e pipelines. Uma mudança geralmente permanece dentro de um contexto, então seu build, testes e deploy são escopados a um serviço. Fronteiras ruins vazam mudanças por muitos serviços e pipelines de uma vez.
Mudança contida, builds contidos
Quando uma mudança permanece dentro de um bounded context, só a pipeline daquele contexto roda, mantendo o feedback rápido. Runners gerenciados quentes (como o Latchkey) garantem que aquele build escopado retorne rapidamente em vez de esperar em uma fila compartilhada.
Principais conclusões
- Um bounded context é o escopo dentro do qual um domain model e seus termos são consistentes.
- Suas fronteiras muitas vezes viram as linhas naturais para serviços e deployment units.
- A tradução entre contextos é um contrato explícito que o CI pode verificar.