Architektura e-shopu, namodelovaná
Jeden internetový obchod, nakreslený třikrát: doména, se kterou pracuje, služby, ze kterých je postavený, a stroje, na kterých běží. Tři diagramy, tři různé otázky a na žádném nic, co patří na jiný.
9 min čteníUML 2.5.132 z 35
Krátká odpověď
- Tři diagramy pokryjí skoro každý rozhovor: diagram tříd na doménu, diagram komponent na smlouvy, diagram nasazení na stroje.
- Kreslete smlouvu, ne dodavatele. Rozhraní IPayment s adaptérem pro Stripe říká, že obchod závisí na schopnosti a ne na značce.
- Jestli je košík samostatnou službou, je rozhodnutí, ne fakt. Košík, který přežije přechod mezi zařízeními, je stav, který někdo vlastní, a dostane smlouvu.
- Databáze je uzel na diagramu nasazení a adaptér na diagramu komponent. Nikdy tentýž box na obou.
01Tři diagramy, tři otázky#
Obchod je příklad, po kterém sáhne každý, a důvod, proč je většina diagramů obchodu zbytečná, je ten, že se snaží být jedním obrázkem. Slovník, hranice služeb a stroje jsou tři rozdílná témata a kresba, která je míchá, neodpoví ani na jedno - je to ten diagram s třídou Order, logem Kubernetes a frontou na jednom plátně.
Rozdělte podle otázky a každá se dá ověřit:
- Jaká jsou podstatná jména? Diagram tříd domény. Čím je objednávka, z čeho se skládá, bez čeho nesmí existovat.
- Kdo smí koho volat? Diagram komponent služeb a kontraktů mezi nimi.
- Kde to běží? Diagram nasazení uzlů a artefaktů na nich.
Nic z toho není diagram front, sekvenční diagram ani výpis infrastruktury jako kódu, a je to záměrné. Ty existují a jsou užitečné; jsou také místem, kde dokumentační sada zemře, pokud první tři nejsou v pořádku.
021. Doména#
Tohle je diagram, který usadí slovník, a slovník je místo, kde se obchody pokazí nejdřív. Je "košík" objednávka, která nebyla zadaná, nebo jiná věc? Drží OrderLine cenu v čase nákupu, nebo ji čte z Product? Druhá otázka je na obrázku zodpovězená - unitPrice žije na položce - a právě ten jediný atribut je rozdílem mezi obchodem, jehož staré faktury zůstanou po změně cen správné, a obchodem, jehož ne.
032. Služby#
Obrázek v hlavičce tohohle článku. Dva klienti, jedna objednávková služba a dva kontrakty, na kterých závisí - sklad a platby. Čtěte ho zakrýváním boxů: zakryjte objednávkovou službu a zbude IOrders, IStock a IPayment, což je přesně ta specifikace, kterou by musela naplnit náhrada.
Adaptér je ten kus, který se vyplatí okopírovat. IPaymentje kontrakt, který vlastní obchod; realizuje ho adaptér Stripe. Nic v objednávkové službě nepojmenovává poskytovatele, takže "co by stál přechod na Adyen?" má odpověď, na kterou vidíte - jeden box a cokoli, co se ukáže, že adaptér propustil. Nakreslené naopak, s objednávkovou službou závislou přímo na komponentě Stripe, potřebuje tatáž otázka hledání v kódu.
Co záměrně chybí: košík, vyhledávací index, doporučovací engine, odesílač e-mailů. Každé z nich je skutečné a ani jedno nemění odpověď na otázku "kdo smí koho volat na cestě pokladny". Jdou na vlastní diagram, až na ně někdo bude mít otázku.
043. Nasazení#
Tohle je diagram, který nikdo nekreslí až do prvního incidentu, a ten, který odpovídá na otázky, na které ty druhé dva neumí: co je dosažitelné z internetu, co mluví s databází a kde sedí hranice ke třetí straně. Stripe API je nakreslené jako externí uzel právě proto, že není vaše - ten box je připomínkou, že jeho dostupnost je závislostí, kterou neřídíte.
Je to zároveň jediný z těch tří, který zastará v obyčejné úterý. Doménový model přežije přechod na jinou platformu nedotčený a pohled na komponenty také; diagram nasazení zneplatní migrace clusteru. Ta asymetrie je dobrým důvodem držet ho odděleně místo zabalení "běží na Kubernetes" do boxů komponent.
Po jednom řádku na každé
- 01Tři diagramy, tři otázky: podstatná jména, kontrakty, stroje.
- 02Kompozice oproti asociaci na Order, OrderLine a Product je celým nákladem doménového modelu.
- 03Vlastněte platební kontrakt a nechte poskytovatele pojmenovat adaptér - právě to dělá přechod ocenitelným.
- 04Zakryjte kteroukoli komponentu: to, co zbude, musí specifikovat její náhradu.
- 05Vyhledávání, e-maily a doporučení nechte mimo diagram pokladny; odpovídají na jinou otázku.
- 06Zastará jen pohled na nasazení, a proto je to vlastní obrázek.
Notace za prostředním diagramem, s pěti dalšími topologiemi, je v příkladech diagramů komponent. Na vytvoření prvního návrhu kteréhokoli z těch tří z popisu místo ručního kreslení koukněte na generování UML pomocí AI.
05Časté dotazy#
Jaké diagramy potřebuji pro zdokumentování e-shopu?
Tři pokryjí skoro každý rozhovor: diagram tříd na doménový slovník, diagram komponent na to, která služba smí volat kterou smlouvu, a diagram nasazení na to, kde všechno běží. Sekvenční diagram přidejte jen na jeden dva opravdu sporné toky, obvykle pokladnu a vratky.
Jak namodelovat platební bránu, aniž se diagram uváže na jednoho dodavatele?
Kreslete smlouvu, ne dodavatele. Rozhraní IPayment s adaptérem pro Stripe, který ho realizuje, říká, že obchod závisí na schopnosti a ne na značce - což je pravdivější a zároveň to, co chcete umět ověřit, když někdo navrhne změnu poskytovatele.
Má být nákupní košík samostatnou službou?
Na diagramu je to rozhodnutí, ne fakt, takže ho nakreslete tak, jak váš systém opravdu funguje. Košík žijící ve frontendu je záležitostí klienta a box nepotřebuje; košík, který přežije přechod mezi zařízeními, je stav, který někdo vlastní, a dostane komponentu se smlouvou jako cokoli jiného.
Kam patří databáze na diagramu architektury?
Na diagram nasazení jako uzel a na diagram komponent jen jako adaptér před ní. Toto rozdělení drží pohled na komponenty u smluv, na kterých závisí váš kód, a otázku, která verze Postgresu kde běží, nechává jedinému diagramu, který je o strojích.
V této sérii
- 01Co je UML?
- 02Symboly UML
- 03Výběr diagramu
- 04Diagramy tříd
- 05Příklady diagramů tříd
- 06Jak nakreslit diagram tříd
- 07Symboly diagramu tříd
- 08Sekvenční diagramy
- 09Příklady sekvenčních diagramů
- 10Jak nakreslit sekvenční diagram
- 11Diagramy případů užití
- 12Příklady případů užití
- 13Diagramy aktivit
- 14Příklady aktivit
- 15Stavové diagramy
- 16Příklady stavových diagramů
- 17Diagramy komponent
- 18Příklady komponent
- 19Kreslení diagramu komponent
- 20Symboly komponent
- 21Diagramy nasazení
- 22Příklady nasazení
- 23Diagramy objektů
- 24Diagramy balíků
- 25Diagramy složené struktury
- 26Komunikační diagramy
- 27Sekvenční vs komunikační
- 28Časové diagramy
- 29Diagramy přehledu interakcí
- 30Diagramy profilů
- 31UML pomocí AI
- 32Příklad e-shopu
- 33Příklad banky
- 34Příklad mikroslužeb
- 35Příklad AWS
Související články
Diagramy struktury
Diagramy struktury
Diagramy struktury
Diagramy struktury
Praxe modelování
Praxe modelování