Bounded Context
Ein Bounded Context ist ein klar abgegrenzter Bereich in einem System, in dem ein Domänenmodell und seine Begriffe eine eindeutige, konsistente Bedeutung haben. Er ist das zentrale Strukturprinzip aus Domain-Driven Design (DDD) und die fachliche Grundlage für Microservice-Schnitte.
Ohne explizite Kontextgrenzen entstehen Modelle, die alles für alle sein wollen, schwer wartbar sind und zu Missverständnissen zwischen Teams führen.
Kernkonzept
Ein Bounded Context definiert:
- Ubiquitous Language: Innerhalb des Kontexts haben alle Begriffe eine exakte, vereinbarte Bedeutung, die auch im Code sichtbar ist.
- Modellgrenzen: Ausserhalb des Kontexts darf das Modell anders aussehen, ohne dass es Konflikte gibt.
- Team-Verantwortung: Jeder Bounded Context wird von einem einzelnen Team verantwortet (Conway's Law als Chance).
Context Mapping
Die Beziehungen zwischen Bounded Contexts werden durch Context Maps visualisiert. Typische Muster:
- Shared Kernel: Zwei Teams teilen ein gemeinsames Kernmodell, das beide pflegen.
- Customer/Supplier: Upstream-Team liefert API, Downstream-Team konsumiert.
- Anti-Corruption Layer (ACL): Schutzschicht, die ein fremdes Modell vor dem eigenen abschirmt.
- Open Host Service: Veröffentlichte API für mehrere Konsumenten.
Der Fokus: Microservice-Grenzen fachlich herleiten
Bounded Contexts verhindern, dass Microservices entlang technischer Schichten (Frontend/Backend/DB) statt entlang fachlicher Domänengrenzen geschnitten werden.
FAQ
Ist ein Bounded Context immer gleich ein Microservice?
Nein. Ein Bounded Context ist ein fachliches Konzept, ein Microservice ein Deployment-Artefakt. In der Startphase kann ein Bounded Context als Modul in einem Monolith leben und erst später extrahiert werden (Strangler Fig Pattern).
Wie gross soll ein Bounded Context sein?
So gross, dass ein einzelnes Team ihn vollständig versteht und verantwortet, aber nicht grösser. Typisch: 2-5 Aggregates.
Reference Guide
- Domain-Driven Design (Evans): Das Grundlagenwerk. dddcommunity.org
- Implementing DDD (Vernon): Praktische Anwendung. O'Reilly
- Context Mapping Patterns: contextmapper.org