Archyno
C4Základy

Č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.

Štyri úrovne modelu C4 ako vnorené rozsahy. Úroveň 1, systémový kontext, drží softvérový systém a ľudí a systémy okolo neho. Úroveň 2, kontajnery, ten systém otvára na webovú aplikáciu, API a databázu. Úroveň 3, komponenty, otvára jeden kontajner na jeho vnútorné časti. Úroveň 4, kód, sú triedy vnútri jedného komponentu.
Každá úroveň odpovedá na jednu otázku a otvára ďalšiu. Publikum sa s približovaním zužuje, a práve preto sú prvé dve tie, ktoré väčšina ľudí kedy potrebuje.
PrvokNotáciaČo znamená
1. Kontext systémuJeden box a k nemu ľudia a susediaJeden 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. KontajneryBoxy vnútri hranice systémuTen jeden box, otvorený. Samostatne nasaditeľné alebo spustiteľné veci - webová aplikácia, API, databáza, broker - a volania medzi nimi.
3. KomponentyBoxy vnútri jedného kontajneraJeden 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ódTriedyTriedy 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é

  1. 01Štyri úrovne, štyri otázky: kto to používa, aké sú diely, čo je vnútri dielu, aké sú triedy.
  2. 02C4 definuje obsah, nie notáciu - kreslite ho teda v UML, v ArchiMate alebo v obyčajných boxoch, a buďte konzistentní.
  3. 03Kontajner je čokoľvek samostatne nasaditeľné alebo spustiteľné. S Dockerom to nemá nič spoločné.
  4. 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

Súvisiace články

Všetky články