Zdroje a další četba
Vybraná literatura, články, videa, repozitáře a kurzy k Domain-Driven Design a CQRS – primární i sekundární zdroje, na které průvodce odkazuje.
Obsah kapitoly
Seznam je kurátorský, ne vyčerpávající. Zařazené zdroje mají buď referenční hodnotu (Evans, Vernon, Fowler), nebo přidávají něco, co jinde nenajdete. U každé položky je krátká nota o důvodu zařazení.
A Knihy
-
01
Domain-Driven Design: Tackling Complexity in the Heart of Software
Zakladatelská kniha. Definuje pojmy Ubiquitous Language, Bounded Context, Aggregate a celý slovník strategického i taktického designu. Stále nejdůležitější primární zdroj.
-
02
Implementing Domain-Driven Design
Praktický druhý díl k Evansovi. Konkrétní implementační vzory, příklady aggregátů, integrace mezi kontexty a propojení s CQRS i Event Sourcingem.
-
03
Domain-Driven Design Distilled
Stručná destilace stěžejních konceptů. Vhodný úvod, pokud váháte, jestli investovat čas do plné Implementing DDD.
-
04
CQRS Documents
Sbírka původních textů od autora pojmu CQRS. Stručné a hutné – definuje, co CQRS je a co není, vč. vztahu k Event Sourcingu.
-
05
Learning Domain-Driven Design
Aktualizovaný druhý pohled po 18 letech praxe. Klade větší důraz na strategický design a na rozhodování, kde DDD vůbec dává smysl. Dobrý doplněk k Evansovi.
B Články
-
01
CQRS
Krátké a přesné vymezení vzoru. Mimo jiné jasně říká, kdy se nehodí.
-
02
Bounded Context
Definice pojmu z pera autora, který ho zpopularizoval mimo DDD komunitu. Užitečná čítanka při vysvětlování konceptu netechnickému publiku.
-
03
Vertical Slice Architecture
Argument pro vertikální slicing místo horizontálních vrstev. Důležité, pokud uvažujete o organizaci kódu uvnitř Bounded Contextu.
-
04
Explicit Architecture: DDD, Hexagonal, Onion, Clean, CQRS
Pokus o syntézu několika architektonických škol do jedné konzistentní mapy. Užitečné pro zorientování se v terminologickém zmatku.
-
05
Implementing DDD, CQRS and Hexagonal Architecture in Symfony
Konkrétní průchod skládáním DDD, CQRS a hexagonální architektury v Symfony – dobré srovnání proti řešením v této příručce.
C Videa a přednášky
-
01
Tackling Complexity in the Heart of Software
Stěžejní Evansova přednáška. Stručnější verze stejnojmenné knihy, dobrá pro pochopení motivace v hodině času.
-
02
CQRS and Event Sourcing
Greg Young v ostře praktickém režimu – kdy má smysl rozlišovat command/query a kdy jít až k event-sourced uložišti.
-
03
Vertical Slice Architecture
Videoverze stejnojmenného článku. Argumentace dovedená do živé prezentace, vč. odpovědí na typické námitky.
-
04
DDD Europe – záznamy z konferencí
Roční konference v Amsterdamu, dnes hlavní setkání DDD komunity. Stovky záznamů, převážně silné přednášky od praktiků.
-
05
Symfony Messenger – screencast
Praktická série o Messengeru od základů po pokročilé scénáře (async transport, middleware, CQRS bus). Pokud Messenger používáte denně, vyplatí se.
D GitHub repozitáře
-
01
php-ddd-example
Referenční implementace hexagonální architektury, DDD a CQRS v PHP nad Symfony. Pečlivě udržovaná, dobré pro inspiraci konkrétní strukturou složek.
-
02
symfony-7-es-cqrs-boilerplate
Boilerplate s plnou implementací Event Sourcingu a CQRS v Symfony. Pokud začínáte, dobrá kostra k orientaci.
-
03
dddinphp/ddd
Příklady kódu z knihy Domain-Driven Design in PHP. Mírně staršího data, ale obsahově konzistentní s Vernonem.
-
04
Sylius/Sylius
Produkční e-commerce platforma postavená na Symfony s DDD principy. Užitečné jako reálný příklad rozsáhlého kódu, nejen jako teoretická ukázka.
E Online kurzy
-
01
Domain-Driven Design Fundamentals
Úvodní kurz pokrývající strategický i taktický design. Přestože je v C#, koncepty jsou jazykově neutrální.
-
02
CQRS in Practice
Praktická aplikace CQRS krok za krokem, vč. čistého oddělení čtecího a zápisového modelu. Vhodné po základech DDD.
-
03
DDD in PHP
Kurz od stejné party, která stojí za referenční implementací výše. Aplikuje DDD a hexagonální architekturu konkrétně v PHP.
-
04
Symfony Messenger
Messenger prakticky – async transport, middleware, command a query bus. Pokud chcete CQRS v Symfony, je to nejkratší cesta.
F Komunity
-
01
DDD Community
Oficiální stránky komunity založené Ericem Evansem. Reference, články a odkazy na konference.
-
02
Domain-Driven Design Czechia
Lokální česká skupina. Praktické setkání s lidmi, kteří DDD reálně používají v produkčních systémech.
-
03
DDD Meetup Groups
Adresář DDD meetupů po celém světě. Pokud cestujete, pravděpodobně někde v okolí najdete živou skupinu.
-
04
Symfony Community
Slack kanál, SymfonyCon, lokální meetupy. Pro otázky kolem frameworku, nikoliv čistě DDD.
G Oficiální dokumentace
-
01
Symfony Documentation
Hlavní rozcestník oficiální dokumentace Symfony.
-
02
Symfony Messenger
Bez Messengeru se CQRS v Symfony neimplementuje. Hlavní referenční dokumentace.
-
03
Symfony & Doctrine ORM
Persistence doménových objektů v Symfony. Praktická referenční dokumentace pro každodenní práci.
-
04
Symfony Validator
Validace na hranici aplikace. Pozor – invariant uvnitř agregátu patří do agregátu, ne do Validatoru.
-
05
Symfony Event Dispatcher
Synchronní eventy v jednom procesu. Pro doménové události uvnitř jednoho požadavku je dostatečný; pro mezi-kontextovou integraci je vhodnější Messenger.