Mikroslužby nakreslené poctivě
Každý diagram mikroslužeb vypadá stejně a téměř žádný neodpoví na jedinou důležitou otázku: dá se kterákoli z nich nasadit samostatně? Dvě uspořádání týchž čtyř služeb - jedno, kde to jde, a jedno, kde ne.
8 min čteníUML 2.5.134 z 35
Krátká odpověď
- Jediná otázka, na kterou musí diagram mikroslužeb odpovědět, je, jestli by šlo kteroukoli krabici vydat ve svůj vlastní den.
- Sledujte synchronní šipky a spočítejte skoky. Tři a více služeb, které musí všechny běžet pro jednu uživatelskou akci, je distribuovaný monolit.
- Volání kreslete jako rozhraní a události jako signály. Úsudek schovaný v kódu se tím promění v něco, s čím může recenzent nesouhlasit.
- Jedna databáze na službu a mimo tento diagram. Kde běží, je pohled na nasazení; co obsahují, je vlastní model každé služby.
01Otázka, na kterou musí diagram mikroslužeb odpovědět#
Ne "jaké služby existují" - to zvládne seznam a ten seznam bývá v názvech repozitářů. Otázka zní: dá se kterákoli z nich nasadit samostatně? Všechno, co lidé od mikroslužeb doufají získat - nezávislá vydání, nezávislé škálování, tým, který umí dodat bez koordinační schůzky - plyne z toho, že odpověď je ano, a žádná jiná vlastnost toho obrázku není důležitá, pokud je ne.
Diagram komponent na ni odpoví, pokud nakreslíte ty správné věci. Každá nasaditelná služba je komponenta; každý zveřejněný kontrakt je rozhraní; každá událost je «signal». Pak zakryjte jednu službu dlaní: pokud to, co zbude, plně specifikuje její náhradu, ta služba se dá vydávat ve vlastním rytmu.
02Dva druhy šipky, záměrně#
Na obrázku výše gateway závisí na IOrders - synchronním kontraktu, protože gateway neumí uživateli odpovědět bez objednávky. Shipping a billing míří na OrderPlaced, signál, který order service posílá a nečeká na něj.
Nakreslit ty dvě odlišně je celá hodnota toho obrázku. Synchronní hrany jsou místa, kde se skládá dostupnost: pokud je order service dole, gateway vrátí chybu. Událostní hrany jsou místa, kde ne: když je dole shipping, opozdí se balík a nic jiného to s sebou nestrhne. Diagram, který obě kreslí jako obyčejné šipky, smazal rozdíl, který rozhoduje o tom, jak systém selhává.
03Uspořádání, které je třeba poznat#
Tohle je distribuovaný monolit a je to nejčastější tvar v produkci. Nic na něm není nelegální, nic není špatně pojmenované a projde posouzením, protože vypadá jako každý jiný diagram mikroslužeb. To, co říká, když čtete šipky místo boxů, je, že ty čtyři služby se musí nasazovat spolu, testovat spolu a být nahoře spolu - takže tým vzal na sebe každý náklad distribuce a nechal si každé omezení monolitu.
Příznak se dá spočítat: počet synchronních skoků na jeden požadavek. Jeden je v pořádku. Dva jsou obvykle v pořádku. Tři a víc a dostupnost celku je součinem dostupností částí, takže čtyři služby po 99,9 % dají dohromady asi 99,6 % - což jsou tři hodiny měsíčně, kdy si nikdo nic neobjedná.
Nápravy jsou vidět na témže obrázku. Nechte orders publikovat událost a nechte pricing a inventory na ni reagovat. Nebo sloučte dva z těch boxů, což je legitimní odpověď, která se navrhuje zřídka. Nebo nakešujte to, co pricing potřebuje, aby ten skok přestal být na cestě požadavku. Všechny tři jsou úpravy tohohle diagramu, a proto se ho vyplatí nakreslit před stavbou za těch dvacet minut.
Po jednom řádku na každé
- 01Jedna komponenta na nasaditelnou službu, jedno rozhraní na zveřejněný kontrakt, jeden signál na událost.
- 02Synchronní a asynchronní vazbu kreslete odlišně - je to způsob, jakým systém selhává.
- 03Synchronně, když volající potřebuje odpověď; událost, když ne.
- 04Počítejte synchronní skoky na požadavek: tři a víc je distribuovaný monolit.
- 05Po synchronním řetězu se dostupnost násobí a ze čtyř devítek jsou tři.
- 06Zakryjte kteroukoli službu: to, co zbude, musí specifikovat její náhradu, jinak se nedá vydávat samostatně.
Notace je pokrytá v průvodci diagramem komponent a pět dalších uspořádání - včetně obousměrného cyklu, který tenhle článek neopakuje - je v příkladech diagramů komponent.
04Časté dotazy#
Jak se mikroslužby kreslí v UML?
Jako komponenty, jedna na každou nasaditelnou službu, s rozhraním pro každou publikovanou smlouvu a signálem pro každou událost. Diagramem mikroslužeb ho dělá to, že každý box by šlo vydat ve svůj vlastní den - a rozhraní kolem něj toto tvrzení buď podporují, nebo mu protiřečí.
Jak z diagramu poznám distribuovaný monolit?
Sledujte synchronní šipky a spočítejte skoky na jeden požadavek. Jestli jedna uživatelská akce projde přes tři a více služeb, které musí všechny běžet, distribuovali jste monolit místo toho, abyste ho rozložili - a diagram vám to řekl dřív než produkce.
Mají spolu služby mluvit synchronně, nebo přes události?
Synchronně tehdy, když volající bez odpovědi nemůže pokračovat, a přes událost tehdy, když může. Kreslit to dvěma různými způsoby - rozhraní pro volání, signál pro události - mění tento úsudek v něco, co recenzent vidí a může s tím nesouhlasit, místo konvence schované v kódu.
Kam patří databáze na diagramu mikroslužeb?
Jedna na službu a mimo tento diagram. Pohled na komponenty je o smlouvách mezi službami a nakreslení pěti databází přidá pět boxů, které říkají totéž; kde běží, patří do diagramu nasazení a co obsahují, do vlastního modelu každé služby.
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
Praxe modelování
Praxe modelování
Diagramy struktury
Diagramy chování
Diagramy struktury