Archyno
UMLPraxe modelování

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.
UML diagram komponent e-shopového systému. Storefront i Admin console závisí na rozhraní IOrders, které realizuje Order service. Order service závisí na rozhraní IPayment, které realizuje adaptér platební brány, a na rozhraní IStock, které realizuje Inventory service.
Pohled, který většina lidí myslí slovem "architektura": čtyři služby, tři kontrakty a jeden adaptér stojící mezi obchodem a poskytovatelem plateb, na kterém obchod nezávisí jménem.

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:

  1. Jaká jsou podstatná jména? Diagram tříd domény. Čím je objednávka, z čeho se skládá, bez čeho nesmí existovat.
  2. Kdo smí koho volat? Diagram komponent služeb a kontraktů mezi nimi.
  3. 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#

UML diagram tříd e-shopové domény. Customer zadává nula nebo více Order. Order je složená z jedné nebo více OrderLine a je v asociaci s jedním Payment. Každá OrderLine odkazuje na jeden Product. Payment je v asociaci s jedním Shipment.
Pět tříd a čtyři vztahy. Plný kosočtverec je celé to tvrzení: OrderLine nemůže existovat bez své Order a zemře s ní, zatímco Product objednávku, která na něj odkazovala, zjevně přežije.

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í#

UML diagram nasazení e-shopového systému. Zařízení s prohlížečem komunikuje přes HTTPS s CDN a edge prostředím, které komunikuje s clusterem Kubernetes obsahujícím artefakty storefrontu a objednávkové služby. Cluster se přes TCP 5432 dostane na zařízení PostgreSQL a přes HTTPS na Stripe API.
Kde to běží, a jediný z těch tří diagramů, který se změní při přechodu na jinou platformu. Artefakty sedí uvnitř uzlu, který je vykonává; označené cesty nesou protokol a port.

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é

  1. 01Tři diagramy, tři otázky: podstatná jména, kontrakty, stroje.
  2. 02Kompozice oproti asociaci na Order, OrderLine a Product je celým nákladem doménového modelu.
  3. 03Vlastněte platební kontrakt a nechte poskytovatele pojmenovat adaptér - právě to dělá přechod ocenitelným.
  4. 04Zakryjte kteroukoli komponentu: to, co zbude, musí specifikovat její náhradu.
  5. 05Vyhledávání, e-maily a doporučení nechte mimo diagram pokladny; odpovídají na jinou otázku.
  6. 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

Související články

Všechny články