Wie teilt man einen Monolithen in Microservices auf? Nach Datenbanktabellen? Nach UI-Seiten? Falsch. Nach Geschäftsdomänen. Eric Evans’ Domain-Driven Design bietet ein Framework zur Modellierung komplexer Systeme — und Bounded Contexts sind die idealen Grenzen für Microservices.
Bounded Context¶
Ein Bounded Context ist eine explizite Grenze, innerhalb derer das Domänenmodell gilt. „Kunde” im CRM ist ein anderer als „Kunde” in der Rechnungsstellung. Gleiches Wort, anderer Kontext, anderes Modell. Jeder Bounded Context = ein Kandidat für einen Microservice.
Ubiquitous Language¶
DDD erfordert eine gemeinsame Sprache zwischen Entwicklern und Fachexperten. Wenn das Business „Bestellung” sagt, hat der Code eine Klasse Order, nicht TransactionRecord. Die Sprache des Codes = die Sprache der Domäne. Keine Übersetzungen.
Aggregates und Entities¶
Entity: Objekte mit Identität (Order, Customer). Lebenszyklus, Zustandsänderungen. Value Object: Objekte ohne Identität (Money, Address). Immutable. Aggregate: Ein Cluster von Objekten mit einer Wurzelentität. Transaktionsgrenze. Regel: Änderungen nur über die Aggregate Root.
public class Order { // Aggregate Root
private OrderId id;
private List<OrderLine> lines;
private OrderStatus status;
public void addLine(Product product, int quantity) {
if (status != DRAFT) throw new IllegalStateException();
lines.add(new OrderLine(product, quantity));
}
public void submit() {
if (lines.isEmpty()) throw new IllegalStateException();
status = SUBMITTED;
registerEvent(new OrderSubmitted(id));
}
}
Context Mapping¶
Wie kommunizieren Bounded Contexts miteinander? Shared Kernel (geteiltes Modell), Customer-Supplier (Upstream/Downstream), Anti-Corruption Layer (Übersetzung zwischen Modellen). Für Microservices typischerweise ACL — jeder Service schützt sein eigenes Modell.
DDD ist eine Investition, die sich auszahlt¶
DDD ist nicht für jedes Projekt — für CRUD-Anwendungen ist es Overkill. Aber für komplexe Domänenlogik und die korrekte Aufteilung von Microservices ist es unschätzbar wertvoll.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns