PHP 8.4+ & Symfony 8 16 kapitol s ukázkami kódu CQRS · Event Sourcing · Taktický design zdarma · česky

Podrobný průvodce · česky

Domain-Driven Design v Symfony 8

Od základních konceptů přes CQRS a Event Sourcing až po reálné případové studie. Vše s ukázkami kódu v PHP 8.4+ a Symfony 8.

Začít s DDD →
16 kapitol
PHP 8.4+ ukázky kódu
CQRS+ES pokryto

Jak číst průvodce

Témata průvodce

Časté otázky

Kolik času a lidí zavedení DDD v projektu vyžaduje?

Pilotní Bounded Context zpravidla doručí první výsledky za 3–6 měsíců, plná migrace středně velké aplikace má realistický horizont 12–24 měsíců. Velikost týmu není rozhodující – podstatnější je přístup k doménovému expertovi a čas vývojářů na osvojení strategických a taktických vzorů. Strangler Fig Pattern umožňuje nasazovat DDD po částech vedle původní CRUD architektury bez nutnosti zastavit vývoj nových feature. Podrobnosti v kapitole Migrace z CRUD na DDD.

Kdy DDD použít a kdy ne?

DDD se vyplatí v projektech s bohatou doménou, dlouhým horizontem a přístupem k doménovým expertům – typicky v bankovnictví, pojišťovnictví, logistice nebo regulovaných odvětvích. Nevhodné je pro prosté CRUD aplikace, prototypy a situace, kdy tým nemá čas si DDD osvojit. Detailní rozbor v kapitole Kdy DDD nepoužívat.

Potřebuji pro DDD doménového experta?

Ano, přístup k doménovému expertovi je jedním z předpokladů úspěchu. Bez něj tým nemá zdroj pro Ubiquitous Language a model se rychle rozchází s realitou. Expertem nemusí být externí konzultant – bývá to produktový manažer, zkušený uživatel nebo regulovaný subjekt. Bez tohoto přístupu se DDD zpravidla redukuje na prázdné taktické vzory bez doménové hodnoty. Viz Kdy DDD nepoužívat.

Jak začít s DDD v Symfony projektu?

Přirozená posloupnost je: nastudovat základní pojmy, vytipovat Bounded Context, definovat Ubiquitous Language, navrhnout agregáty s jasnými invarianty a zavést repozitáře a aplikační služby nad Symfony Messengerem. U existujícího projektu pomáhá Event Storming pro analýzu domény. Startovacím bodem je kapitola Implementace DDD v Symfony.

V čem se DDD liší od klasického CRUD?

CRUD architektura mapuje formuláře na databázové tabulky – logika obvykle žije v kontrolerech a „Service" třídách, model je pasivní. DDD naopak soustředí logiku do doménových objektů (agregátů), které vynucují invarianty a komunikují přes definované rozhraní. CRUD je levnější na start, DDD se vyplatí s rostoucí komplexitou domény. Srovnání v kapitole Migrace z CRUD na DDD.

O autorovi

Michal Katuščák – PHP/React vývojář

Michal Katuščák

PHP/React vývojář · 13+ let komerčního vývoje

Průvodce jsem napsal jako výsledek hloubkového studia DDD a Symfony ekosystému. Vychází z 13+ let komerčního vývoje webových aplikací v PHP a Symfony.