Čo je model C4?
Štyri úrovne priblíženia jedného systému, každá odpovedá na otázku, ktorú položila tá nad ňou - a zámerne žiadna vlastná notácia, práve preto sa dobre prenáša medzi tímami.
7 min čítaniaC4 model1 z 3
Krátka odpoveď
- C4 sú štyri úrovne priblíženia jedného systému - kontext, kontajnery, komponenty, kód - a každá úroveň existuje preto, aby odpovedala na jednu otázku, ktorú položila tá nad ňou.
- Je to konvencia, nie notácia. C4 hovorí, čo na diagram patrí, a tvary necháva na vás - preto sa dá kresliť v UML, v ArchiMate aj v boxoch a šípkach.
- Kontajner je nasaditeľná alebo spustiteľná vec - aplikácia, služba, databáza - nie Docker kontajner. Je to úroveň, z ktorej má väčšina tímov najväčší úžitok, a zároveň tá najčastejšie vynechávaná.
- Úroveň 4 sa ručne kresliť zvyčajne neoplatí. Ak chcete triedy, vygenerujte ich z kódu, kde už pravdivé sú.
01Štyri otázky, v poradí#
Model C4 je súbor štyroch diagramov nad jedným systémom, každý bližší pohľad než ten predchádzajúci. Jeho skutočným prínosom nie je kreslenie - je to poradie. Každá úroveň odpovedá na otázku a tá odpoveď otvorí otázku, kvôli ktorej existuje úroveň ďalšia.
| Prvok | Notácia | Čo znamená |
|---|---|---|
| 1. Kontext systému | Jeden box a k nemu ľudia a susedia | Jeden box pre váš systém, obklopený ľuďmi a ostatnými systémami, s ktorými komunikuje. Žiadne vnútro. Diagram, ktorý prečíta nováčik aj sponzor. |
| 2. Kontajnery | Boxy vnútri hranice systému | Ten jeden box, otvorený. Samostatne nasaditeľné alebo spustiteľné veci - webová aplikácia, API, databáza, broker - a volania medzi nimi. |
| 3. Komponenty | Boxy vnútri jedného kontajnera | Jeden kontajner, otvorený. Hlavné štrukturálne časti v ňom a ich závislosti. Oplatí sa nakresliť, keď je kontajner dosť veľký na to, aby sa o ňom dalo dohadovať. |
| 4. Kód | Triedy | Triedy vnútri jedného komponentu, čo je UML diagram tried. Vygenerujte ho alebo vynechajte; kresliť túto úroveň ručne je najrýchlejšia cesta k zastaranému diagramu. |
Ako klesáte, publikum sa zužuje. Úroveň 1 je pre kohokoľvek, koho systém zaujíma, vrátane ľudí, ktorí nikdy neprečítajú kód. Úroveň 4 je pre tím, v týždni, keď niečo prestavuje. Ten spád je argumentom pre to, aby ste nakreslili prvé dve a zastavili sa, kým niekto nepožiada o viac.
02C4 je konvencia, nie notácia#
Práve toto sa stráca. C4 nedefinuje tvary, štýly čiar ani sémantiku vzťahov. Hovorí vám, čo patrí na ktorý diagram a pre koho je, a potom dodá: nakreslite to tak, ako váš tím kreslí veci aj tak.
Praktickým dôsledkom je, že C4 sa skladá s notáciou, ktorú už máte, namiesto toho, aby ju nahrádzal. Diagram kontajnerov nakreslený UML komponentmi je zároveň legálnym UML diagramom aj správnym C4 diagramom. Nakreslený v ArchiMate sa ten istý obsah mapuje na aplikačné komponenty a technologické uzly. Oboje je v poriadku. V poriadku nie je diagram, ktorého boxy znamenajú tri rôzne veci, lebo nikto nepovedal, o ktorú úroveň ide.
Keďže tu nie je notácia na kontrolu, disciplína musí prísť odinakiaľ: označte každý box tým, čo je, označte každú čiaru tým, čo robí a akým protokolom, a nikdy nemiešajte dve úrovne na jednom plátne. Tie tri pravidlá spravia väčšinu práce, ktorú by inak za vás spravila špecifikácia.
03Problémom je slovo kontajner#
C4 vznikol pred nadvládou Dockeru a používa slovo kontajner v jeho staršom, všeobecnom význame: vec, ktorá musí bežať, aby systém fungoval, a ktorá sa dá nasadiť samostatne. Jednostránková aplikácia je kontajner. Rovnako aj databáza, serverless funkcia, message broker a mobilná aplikácia.
Úroveň 2 je tam, kde je väčšina hodnoty, a je to tá úroveň, ktorú tímy vynechávajú - čiastočne kvôli názvu a čiastočne preto, že je to prvý diagram, ktorý si vynúti skutočné rozhodnutie o tom, čím systém vlastne je. Článok o diagrame kontajnerov jeden taký prechádza od začiatku do konca.
04Ako ho používať, aby nezastaral#
Sada C4 diagramov má rovnaký spôsob zlyhania ako každá iná architektonická dokumentácia: v deň nakreslenia je presná a o pol roka ticho nesprávna. Pomáhajú dve veci a ani jedna nie je o kreslení.
Prvou je držať úrovne v jednom modeli, nie v štyroch nesúvisiacich obrázkoch. Ak je API na vašom kontextovom diagrame a API na diagrame kontajnerov ten istý prvok, premenovanie je jedna úprava; ak sú to dva boxy, ktoré náhodou zdieľajú popisku, premenovanie sú dve úpravy a na jednu sa zabudne. To je argument pre model za pohľadmi a je to ten istý argument, ktorý zoširoka rozvádza udržiavanie modelu aktuálnym.
Druhou je kresliť menej úrovní. Kontextový diagram a diagram kontajnerov, ktoré sú pravdivé, sú lepšie než štyri úrovne, z ktorých dve sú fikcia. Najmä úroveň 4 by sa mala generovať z kódu alebo vynechať - ručne kreslený diagram tried je snímka názoru a kompilátor má aktuálnejší.
Po jednom riadku na každé
- 01Štyri úrovne, štyri otázky: kto to používa, aké sú diely, čo je vnútri dielu, aké sú triedy.
- 02C4 definuje obsah, nie notáciu - kreslite ho teda v UML, v ArchiMate alebo v obyčajných boxoch, a buďte konzistentní.
- 03Kontajner je čokoľvek samostatne nasaditeľné alebo spustiteľné. S Dockerom to nemá nič spoločné.
- 04Kreslite úrovne 1 a 2, pridajte 3 tam, kde treba rozhodnúť spor, a 4 vygenerujte alebo vynechajte.
05Časté otázky#
Čo znamená skratka C4?
Context, Containers, Components a Code - štyri úrovne detailu, od celého systému v jeho prostredí až po triedy vnútri jedného komponentu. Ten názov je obsah knihy.
Je C4 náhradou za UML?
Nie, a ani alternatívou k nemu. C4 hovorí, ktoré štyri diagramy kresliť a čo na ktorý patrí; UML dáva notáciu s definovanou sémantikou. Skladajú sa: C4 diagram kontajnerov nakreslený notáciou UML komponentov je legálny UML diagram aj správny C4 diagram.
Čo je v C4 kontajner?
Niečo, čo musí bežať, aby systém fungoval, a čo sa dá nasadiť samostatne - webová aplikácia, mobilná aplikácia, API, databáza, message broker. Nie je to Docker kontajner a práve táto zhoda názvov je najčastejším zdrojom zmätku okolo modelu.
Musím nakresliť všetky štyri úrovne?
Nie. Väčšina tímov nakreslí úrovne 1 a 2 a skončí. Úroveň 3 sa oplatí pri kontajneri natoľko zložitom, že sa o jeho vnútre vedú spory, a úroveň 4 takmer nikdy - kód je už popisom kódu.
V tejto sérii
- 01Čo je C4?
- 02Diagram kontajnerov
- 03C4 vs UML
Súvisiace články
Diagramy štruktúry
Prax modelovania
Diagramy štruktúry
Základy
Prax modelovania