Shared Kernel
Der gemeinsame Teil bleibt klein, sichtbar versioniert und durch Tests sowie direkte Teamabstimmung geschützt.
- KernelKleiner geteilter Modellteil.
- VerantwortungTeams stimmen Änderungen ab.
- TestsGemeinsamen Vertrag absichern.
Einordnung
Warum das wichtig ist
Einen gemeinsam verantworteten Modellteil klein halten und seine Änderung explizit koordinieren.
Strategisches DDD und Zusammenarbeit an fachlichen Modellen.
Shared Kernel und getrennte Modelle
Der Shop bleibt ein modularer Monolith mit sieben fachlichen Modulen und gemeinsamer Auslieferung.
So liest du das Bild
- Kernel Umfang
- Verantwortung Zusammenarbeit
- Tests Kompatibilität
| Kriterium | Shared Kernel | Getrennte Modelle |
|---|---|---|
| Bedeutung | Exakt gemeinsam | Kontextbezogen übersetzt |
| Änderung | Gemeinsam abstimmen | Unabhängig entwickeln |
| Kopplung | Höher | Geringer |
Nutzen & Grenzen
Hilft, wenn
- Ein kleiner fachlicher Ausschnitt muss aus nachvollziehbarem Grund exakt geteilt werden.
- Die beteiligten Teams können Änderungen gemeinsam planen, testen und ausliefern.
Grenzen
- Gemeinsame Codebasis erzeugt Kopplung an Modell- und Releaseentscheidungen.
- Wächst der gemeinsame Teil, werden getrennte Modelle mit expliziter Übersetzung oft verständlicher.
In der Praxis
- Benenne den gemeinsam genutzten fachlichen Teil und prüfe, ob beide Kontexte dieselbe Bedeutung tatsächlich benötigen. Halte diese gemeinsame Bedeutung samt Pflegeverantwortung in einer Vereinbarung für beide Teams fest.
- Begrenze den Kernel auf die notwendigen Typen und Regeln, versioniere Änderungen nachvollziehbar und richte gemeinsame Tests ein. Vereinbare, welche Teams vor einer Änderung zustimmen und kompatible Releases prüfen.
- Bewerte bei jeder Erweiterung, ob die gemeinsame Semantik weiterhin mehr Nutzen als Abstimmungsaufwand bringt. Entferne Elemente, die nur aus Bequemlichkeit geteilt werden oder in einem Kontext eine andere Bedeutung erhalten.
Ausführliche Erklärung lesen
Ein Shared Kernel ist eine bewusste Ausnahme von ansonsten getrennten Modellen. Teams legen fest, welche Typen oder Regeln dazugehören und wie Änderungen gemeinsam geprüft werden. Die gemeinsame Nutzung spart Übersetzungsaufwand, koppelt jedoch Release- und Modellentscheidungen. Größere gemeinsame Bibliotheken werden schnell zu einem versteckten Integrationsvertrag, wenn Verantwortung und Änderungstakt auseinanderlaufen.
Shared Kernel ist eine Context-Map-Beziehung. Eine Context Map ordnet die Zusammenarbeit; der Bounded Context grenzt jeweils das Modell ab.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Was teilen die Shopmodule im Beispiel?
Lösung mit Begründung ansehen
Eine bestätigte Bestellreferenz mit abgestimmtem Vertrag.
AnwendenAuf eine neue Lage übertragen
Was gehört in einen Shared Kernel?
Lösung mit Begründung ansehen
Nur ein fachlich identischer, bewusst gemeinsamer und gepflegter Modellteil.
BewertenEine Alternative abwägen
Wann lohnt sich eine Trennung der Modelle?
Lösung mit Begründung ansehen
Wenn gemeinsame Änderungen mehr Abstimmung kosten als die gemeinsame Semantik Nutzen schafft.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.
Quellen
- Eric Evans · DDD Reference (öffnet in neuem Tab)Primärreferenz zu Context Mapping und gemeinsamem Modellkern.
- Vaughn Vernon · Implementing Domain-Driven Design (öffnet in neuem Tab)Praxisbeispiele zu Kontextbeziehungen und gemeinsamer Modellpflege.
- Domain-Driven Design Reference · Context Mapping (öffnet in neuem Tab)Begriffsreferenz für Beziehungen zwischen Bounded Contexts.