Zvládnutí firemní složitosti v mikroslužbě pomocí vzorů DDD a CQRS
Navrhovat doménový model pro každou mikroslužbu nebo ohraničovaný kontext, který odráží pochopení obchodní domény.
Tato část se zaměřuje na pokročilejší mikroslužby, které implementujete, když potřebujete řešit složité subsystémy, nebo mikroslužby odvozené ze znalostí odborníků na domény s neustále se měnícími obchodními pravidly. Vzory architektury používané v této části jsou založené na návrhu řízeného doménou (DDD) a přístupu CQRS (Command and Query Responsibility Segregation) (CQRS), jak je znázorněno na obrázku 7-1.
Rozdíl mezi externí architekturou: vzory mikroslužeb, brány rozhraní API, odolná komunikace, pub/sub atd. a interní architektura: řízené daty / CRUD, vzory DDD, injektáž závislostí, více knihoven atd.
Obrázek 7–1. Porovnání architektury externích mikroslužeb a interních vzorů architektury pro jednotlivé mikroslužby
Většina technik pro mikroslužby řízené daty, jako je například implementace služby webového rozhraní API ASP.NET Core nebo jak zveřejnit metadata Swaggeru pomocí Swashbucklu nebo NSucklu, se ale vztahuje i na pokročilejší mikroslužby implementované interně pomocí vzorů DDD. Tato část je rozšířením předchozích částí, protože většina dříve vysvětlených postupů platí také tady nebo pro jakýkoli druh mikroslužby.
Tato část nejprve obsahuje podrobnosti o zjednodušených vzorech CQRS používaných v referenční aplikaci eShopOnContainers. Později získáte přehled o technikách DDD, které vám umožní najít běžné vzory, které můžete opakovaně používat ve svých aplikacích.
DDD je velké téma s bohatou sadu prostředků pro výuku. Můžete začít s knihami, jako je Domain-Driven Design od Erica Evanse, a dalšími materiály od V posudků, Venina Nilssona, Grega Younga, Udi Dahana, Sédarda a mnoha dalších odborníků na DDD/CQRS. Většinu ze všech se ale musíte pokusit naučit, jak používat techniky DDD z konverzací, tabule a relací modelování domén s odborníky ve vaší konkrétní obchodní oblasti.
Další zdroje informací
DDD (návrh řízený doménou)
Eric Evans. Domain Language
https://domainlanguage.com/Martin Fowler. Domain-Driven návrhu
https://martinfowler.com/tags/domain%20driven%20design.htmlPokud chcete, můžete si ho odsudky posu Základní informace o vaší doméně: základní informace
https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/
Knihy DDD
Eric Evans. Domain-Driven designu: T complexity in the Heart of Software
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/Eric Evans. Domain-Driven návrhu: Definice a souhrny vzorů
https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/Vimán Šmíd. Implementace Domain-Driven projektu
https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/Vimán Šmíd. Domain-Driven návrhu
https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/Jimmy Nilsson. Použití Domain-Driven a vzorů
https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/Selhot de la Uža. Průvodce architekturou vícevrstvých Domain-Oriented s .NET
https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/Abel Avram a Domain-Driven návrhu
https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/Scott Millett, Tune – vzory, principy a postupy Domain-Driven designu
https://www.wiley.com/Patterns%2C+Principles%2C+and+Practices+of+Domain+Driven+Design-p-9781118714706
Trénování DDD
- Julie Lerman a Steve Smith. Domain-Driven návrhu
https://bit.ly/PS-DDD