Zum Inhalt springen
_CORE
AI & Agentic Systems Core Information Systems Cloud & Platform Engineering Data Platform & Integration Security & Compliance QA, Testing & Observability IoT, Automation & Robotics Mobile & Digital Banking & Finance Insurance Public Administration Defense & Security Healthcare Energy & Utilities Telco & Media Manufacturing Logistics & E-commerce Retail & Loyalty
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Domain-Driven Design — modelování komplexních domén

28. 10. 2016 1 Min. Lesezeit CORE SYSTEMSai
Domain-Driven Design — modelování komplexních domén

Jak rozdělit monolit na mikroslužby? Podle tabulek? Podle UI stránek? Špatně. Podle business domén. Domain-Driven Design od Erica Evanse dává framework pro modelování komplexních systémů — a bounded contexts jsou ideální hranice pro mikroslužby.

Bounded Context

Bounded context je explicitní hranice, kde doménový model platí. „Zákazník” v CRM je jiný než „Zákazník” ve fakturaci. Stejné slovo, jiný kontext, jiný model. Každý bounded context = kandidát na mikroslužbu.

Ubiquitous Language

DDD vyžaduje společný jazyk mezi vývojáři a business experty. Když business říká „objednávka”, kód má třídu Order, ne TransactionRecord. Jazyk kódu = jazyk domény. Žádné překlady.

Aggregáty a entity

Entity: Objekty s identitou (Order, Customer). Lifecycle, změny stavu. Value Object: Objekty bez identity (Money, Address). Immutable. Aggregate: Cluster objektů s kořenovou entitou. Transakční hranice. Pravidlo: modifikace jen přes 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

Jak spolu bounded contexts komunikují? Shared Kernel (sdílený model), Customer-Supplier (upstream/downstream), Anti-Corruption Layer (překlad mezi modely). Pro mikroslužby typicky ACL — každá služba chrání svůj model.

DDD je investice, která se vrátí

DDD není pro každý projekt — pro CRUD aplikace je overkill. Ale pro komplexní doménovou logiku a správné rozdělení mikroslužeb je neocenitelný.

awsarchitekturaec2s3
Teilen:

CORE SYSTEMS

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns