Bounded Context (DDD)
Einleitung
Ein Bounded Context ist das zentrale Strukturprinzip von Domain-Driven Design (DDD).
Er definiert:
Wo ein Modell gültig ist – und wo nicht.
Ein Bounded Context schützt vor:
- semantischer Mehrdeutigkeit
- widersprüchlichen Modellen
- impliziter Kopplung
Das Ziel ist nicht maximale Wiederverwendung,
sondern minimale semantische Kollision.
Einordnung
Ein Bounded Context ist kein technisches Pattern.
Er ist ein konzeptionelles Strukturprinzip auf Domänenebene.
Er beeinflusst:
- Systemzuschnitt
- Teamstruktur
- Integrationsform
- Architekturentscheidungen
Bounded Contexts können umgesetzt werden als:
- Modul (im Monolith)
- Self-Contained System
- Microservice
- eigenständiges Subsystem
DDD ist technologieunabhängig –
der Bounded Context ist es ebenfalls.
Grundprinzip
Kernaussage:
- Begriffe existieren kontextspezifisch
- Modelle sind nicht global
- Integration erfordert Übersetzung
Charakteristika
1️⃣ Ubiquitous Language pro Kontext
- Begriffe sind klar definiert
- Gleiche Wörter können unterschiedliche Bedeutungen haben
- Sprache und Code spiegeln sich
Beispiel:
„Kunde“ im Sales ≠ „Kunde“ im Billing
2️⃣ Eigenes Domänenmodell
- Eigene Aggregate
- Eigene Regeln
- Eigene Invarianten
Keine geteilten Core-Entities über mehrere Kontexte hinweg.
3️⃣ Explizite Integrationspunkte
Integration erfolgt über:
- APIs
- Events
- Contracts
- Anti-Corruption Layer
Nicht über:
- Shared Database
- Shared Domain Models
4️⃣ Kontextkarte (Context Map)
Ein Bounded Context existiert nie isoliert.
Context Maps beschreiben:
- Upstream/Downstream
- Conformist
- Anti-Corruption Layer
- Shared Kernel
- Partnership
Ohne Context Map werden Abhängigkeiten unsichtbar.
Vorteile
- Reduzierte Mehrdeutigkeit
- Autonome Weiterentwicklung
- Bessere Änderbarkeit
- Klare Ownership
- Skalierbarkeit von Teams
Risiken / typische Fallstricke
1️⃣ God Context
Zu grob geschnitten → Monolith im neuen Gewand.
2️⃣ Überfragmentierung
Zu feine Schnitte → Integrations-Overhead explodiert.
3️⃣ Shared Model Illusion
Gemeinsame Entities über Kontexte hinweg → versteckte Kopplung.
4️⃣ Organisatorische Verwechslung
Organisationsstruktur ≠ Domänenstruktur.
Teamgrenzen sollten sich an Domänengrenzen orientieren – nicht umgekehrt.
Bounded Context vs. Technische Struktur
| Bounded Context | Microservice | |
|---|---|---|
| Ebene | Domänenkonzept | Technische Umsetzung |
| Ziel | Semantische Klarheit | Deployment-Autonomie |
| Notwendig für DDD? | Ja | Nein |
| Technologiefestlegung? | Nein | Ja |
Ein Microservice kann ein Bounded Context sein – muss es aber nicht.
Wann sinnvoll?
- Mehrere Teams arbeiten an unterschiedlichen Domänen
- Begriffe haben unterschiedliche Bedeutungen
- Komplexe Geschäftslogik
- Langfristige Wartbarkeit wichtiger als kurzfristige Einfachheit
Wann weniger relevant?
- Sehr kleines System
- Homogene, stabile Domäne
- Ein Team verantwortet alles
- Kaum semantische Konflikte
Typische Kombinationen
- Modularer Monolith mit klaren Modulgrenzen
- Self-Contained Systems
- Microservices pro Kontext
- Anti-Corruption Layer
- Event-Driven Integration
Fazit
Ein Bounded Context ist:
- ein semantischer Schutzraum
- eine Organisationshilfe
- ein Architektur-Leitprinzip
Er ist keine technische Lösung, sondern die Grundlage für saubere technische Lösungen.
Ohne klare Kontexte entstehen:
- verteilte Monolithen
- Shared Model Chaos
- organisatorische Reibung