Diagram kontajnerov v C4
Druhá úroveň modelu C4, nakreslená od začiatku do konca - a jediná úroveň, ktorej názov spôsobuje viac zmätku než samotný diagram.
6 min čítaniaC4 model2 z 3
Krátka odpoveď
- Kontajner je čokoľvek samostatne nasaditeľné alebo spustiteľné: aplikácia, API, databáza, broker. Nie Docker kontajner.
- Každý box dostane svoju technológiu a každá čiara svoj protokol. Diagram kontajnerov bez nich je skica z boxov a šípok.
- Šípku kreslite v smere volania, nie v smere dát. Odpoveď je implikovaná a kresliť ju znamená zdvojnásobiť čiary za nič.
- Externé systémy zostávajú na diagrame, ale mimo hranice a v sivej - vysvetlia okraje bez toho, aby predstierali, že ich riadite.
01Jeden systém, otvorený#
Diagram kontajnerov vezme jediný box z diagramu kontextu systému a otvorí ho. Všetko vnútri je niečo, čo musí bežať; všetko vonku zostáva kontextom.
Čítajte ho ako súbor viet: zákazník prehliada jednostránkovú aplikáciu; aplikácia volá storefront API cez HTTPS; API zapisuje objednávky do PostgreSQL a publikuje do RabbitMQ; worker konzumuje z RabbitMQ a zapisuje do tej istej databázy. Práve tá posledná veta je dôvod, prečo diagram kontajnerov existuje - dva kontajnery zapisujúce do jednej databázy sú väzba, ktorú žiadny katalóg služieb neukáže.
02Technológia na boxe, protokol na čiare#
Práve tieto dve popisky odlišujú diagram kontajnerov od skice. Bez technológie by box s názvom "Storefront API" mohol byť Lambda, monolit v Rails alebo uložená procedúra. Bez protokolu by čiara medzi dvoma boxmi mohla byť synchrónne volanie v ceste požiadavky alebo nočná dávka - a to sú pre kohokoľvek, kto uvažuje o zlyhaniach, opačné fakty.
Šípku kreslite v smere volania, nie v smere dát. Čítanie je stále volanie od čitateľa k úložisku a kresliť odpoveď ako druhú šípku zdvojnásobí počet čiar bez akéhokoľvek prínosu - odpoveď je implikovaná požiadavkou.
03Štyri chyby, ktoré ho spravia zbytočným#
Vynechanie úložísk. Diagram služieb bez databáz skrýva presne tú väzbu, ktorá spôsobuje incidenty. Ak dva kontajnery zapisujú do tej istej tabuľky, musí to byť na obrázku.
Miešanie úrovní. Diagram kontajnerov s jedným kontajnerom otvoreným do jeho vnútorných tried sú dva diagramy zle preložené cez seba. Otvorte ho radšej na diagrame komponentov, kde publikum takú hĺbku očakáva.
Kreslenie infraštruktúry. Load balancery, sidecary a uzly Kubernetes patria na diagram nasadenia. Diagram kontajnerov je o tom, čím softvér je, nie o tom, kde beží.
Tiché vypustenie externých systémov. Poskytovateľ platieb nie je váš a z toho dôvodu ho nemožno vynechať - je zdrojom vašej latencie a polovice vašich režimov zlyhania. Nechajte ho tam, označte ho ako externý a tým to skončí.
Po jednom riadku na každé
- 01Kontajner je samostatne nasaditeľný alebo spustiteľný - aplikácia, API, databáza, broker, úloha.
- 02Označte každý box technológiou a každú čiaru protokolom, inak diagram nehovorí nič.
- 03Šípky sledujú volania, nie dáta. Odpoveď je implikovaná.
- 04Úložiská a externé systémy zostávajú na diagrame; infraštruktúra sa presúva na diagram nasadenia.
04Časté otázky#
Čo sa v C4 počíta ako kontajner?
Čokoľvek, čo musí bežať, aby systém fungoval, a čo sa dá nasadiť alebo spustiť samostatne: webová aplikácia, jednostránková aplikácia, mobilná aplikácia, API, databáza, message broker, plánovaná úloha. Testom je nasaditeľnosť, nie počet procesov ani technológia.
Je Docker kontajner kontajnerom podľa C4?
Nie nutne. Názvy sa zhodujú, ale znamenajú iné veci. Tri procesy v jednom image sú tri C4 kontajnery, ak o nich tím uvažuje oddelene; jedna služba bežiaca na štyridsiatich replikách je jeden C4 kontajner. Ignorujte balenie a pýtajte sa, čo je samostatne nasaditeľné.
Má byť každá mikroslužba kontajnerom?
Áno, a to je poctivý dôvod, prečo diagramy kontajnerov narastajú. Ak štyridsať služieb spraví diagram nečitateľným, je to informácia o architektúre, nie o notácii - zoskupte ich podľa ohraničených kontextov a kreslite skupiny, alebo kreslite jeden diagram na kontext.
Kam patria fronty a databázy?
Na diagram, ako kontajnery, s označenou technológiou. Vynechať databázu je najčastejší spôsob, ako sa diagram kontajnerov stane zavádzajúcim: skryje väzbu medzi dvoma službami, ktoré do nej obe zapisujú.
Súvisiace články
Základy
Prax modelovania
Diagramy štruktúry
Prax modelovania