Reference · Zdroje a další četba

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.

Autor M. Katuščák
Publikováno · Aktualizováno ·
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

  1. 01
    Eric Evans · 2003 · Addison-Wesley
    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.

  2. 02
    Vaughn Vernon · 2013 · Addison-Wesley
    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.

  3. 03
    Vaughn Vernon · 2016 · Addison-Wesley
    Domain-Driven Design Distilled

    Stručná destilace stěžejních konceptů. Vhodný úvod, pokud váháte, jestli investovat čas do plné Implementing DDD.

  4. 04
    Greg Young · 2010 · PDF (zdarma)
    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.

  5. 05
    Vlad Khononov · 2021 · O'Reilly
    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

  1. 01
    Martin Fowler · martinfowler.com
    CQRS

    Krátké a přesné vymezení vzoru. Mimo jiné jasně říká, kdy se nehodí.

  2. 02
    Martin Fowler · martinfowler.com
    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.

  3. 03
    Jimmy Bogard · jimmybogard.com
    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.

  4. 04
    Herberto Graca · herbertograca.com
    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.

  5. 05
    Jakub Skowron · Medium
    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

  1. 01
    Eric Evans · YouTube · keynote
    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.

  2. 02
    Greg Young · YouTube · konference
    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.

  3. 03
    Jimmy Bogard · YouTube · konference
    Vertical Slice Architecture

    Videoverze stejnojmenného článku. Argumentace dovedená do živé prezentace, vč. odpovědí na typické námitky.

  4. 04
    Domain-Driven Design Europe · YouTube kanál
    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ů.

  5. 05
    SymfonyCasts · placený kurz
    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

  1. 01
    CodelyTV · PHP · Symfony
    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.

  2. 02
    Jorge Arco · PHP · Symfony 7
    symfony-7-es-cqrs-boilerplate

    Boilerplate s plnou implementací Event Sourcingu a CQRS v Symfony. Pokud začínáte, dobrá kostra k orientaci.

  3. 03
    DDD in PHP · Buenosvinos / Soronellas / Akbary
    dddinphp/ddd

    Příklady kódu z knihy Domain-Driven Design in PHP. Mírně staršího data, ale obsahově konzistentní s Vernonem.

  4. 04
    Sylius Team · Symfony · e-commerce
    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

  1. 01
    Pluralsight · Steve Smith / Julie Lerman · C#
    Domain-Driven Design Fundamentals

    Úvodní kurz pokrývající strategický i taktický design. Přestože je v C#, koncepty jsou jazykově neutrální.

  2. 02
    Pluralsight · Vladimir Khorikov · C#
    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.

  3. 03
    CodelyTV · PHP · placený
    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.

  4. 04
    SymfonyCasts · placený
    Symfony Messenger

    Messenger prakticky – async transport, middleware, command a query bus. Pokud chcete CQRS v Symfony, je to nejkratší cesta.

F Komunity

  1. 01
    dddcommunity.org · web
    DDD Community

    Oficiální stránky komunity založené Ericem Evansem. Reference, články a odkazy na konference.

  2. 02
    Meetup · česky
    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.

  3. 03
    Meetup · globálně
    DDD Meetup Groups

    Adresář DDD meetupů po celém světě. Pokud cestujete, pravděpodobně někde v okolí najdete živou skupinu.

  4. 04
    symfony.com · oficiální
    Symfony Community

    Slack kanál, SymfonyCon, lokální meetupy. Pro otázky kolem frameworku, nikoliv čistě DDD.

G Oficiální dokumentace

  1. 01
    symfony.com · oficiální
    Symfony Documentation

    Hlavní rozcestník oficiální dokumentace Symfony.

  2. 02
    symfony.com · komponenta
    Symfony Messenger

    Bez Messengeru se CQRS v Symfony neimplementuje. Hlavní referenční dokumentace.

  3. 03
    symfony.com · komponenta
    Symfony & Doctrine ORM

    Persistence doménových objektů v Symfony. Praktická referenční dokumentace pro každodenní práci.

  4. 04
    symfony.com · komponenta
    Symfony Validator

    Validace na hranici aplikace. Pozor – invariant uvnitř agregátu patří do agregátu, ne do Validatoru.

  5. 05
    symfony.com · komponenta
    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.