Archyno
C4Základy

Co je model C4?

Čtyři úrovně přiblížení jednoho systému, každá odpovídá na otázku, kterou položila ta nad ní - a záměrně žádná vlastní notace, právě proto se dobře přenáší mezi týmy.

7 min čteníC4 model1 z 3

Krátká odpověď

  • C4 jsou čtyři úrovně přiblížení jednoho systému - kontext, kontejnery, komponenty, kód - a každá úroveň existuje proto, aby odpověděla na jednu otázku, kterou položila ta nad ní.
  • Je to konvence, ne notace. C4 říká, co na diagram patří, a tvary nechává na vás - proto se dá kreslit v UML, v ArchiMate i v boxech a šipkách.
  • Kontejner je nasaditelná nebo spustitelná věc - aplikace, služba, databáze - ne Docker kontejner. Je to úroveň, ze které má většina týmů největší užitek, a zároveň ta nejčastěji vynechávaná.
  • Úroveň 4 se ručně kreslit obvykle nevyplatí. Pokud chcete třídy, vygenerujte je z kódu, kde už pravdivé jsou.

01Čtyři otázky, v pořadí#

Model C4 je soubor čtyř diagramů nad jedním systémem, každý bližší pohled než ten předchozí. Jeho skutečným přínosem není kreslení - je to pořadí. Každá úroveň odpovídá na otázku a ta odpověď otevře otázku, kvůli které existuje úroveň další.

Čtyři úrovně modelu C4 jako vnořené rozsahy. Úroveň 1, systémový kontext, drží softwarový systém a lidi a systémy okolo něj. Úroveň 2, kontejnery, ten systém otevírá na webovou aplikaci, API a databázi. Úroveň 3, komponenty, otevírá jeden kontejner na jeho vnitřní části. Úroveň 4, kód, jsou třídy uvnitř jedné komponenty.
Každá úroveň odpovídá na jednu otázku a otevírá další. Publikum se s přibližováním zužuje, a právě proto jsou první dvě ty, které většina lidí kdy potřebuje.
PrvekNotaceCo znamená
1. Kontext systémuJeden box a k němu lidé a sousedéJeden box pro váš systém, obklopený lidmi a ostatními systémy, se kterými komunikuje. Žádné vnitřnosti. Diagram, který přečte nováček i sponzor.
2. KontejneryBoxy uvnitř hranice systémuTen jeden box, otevřený. Samostatně nasaditelné nebo spustitelné věci - webová aplikace, API, databáze, broker - a volání mezi nimi.
3. KomponentyBoxy uvnitř jednoho kontejneruJeden kontejner, otevřený. Hlavní strukturní části v něm a jejich závislosti. Vyplatí se nakreslit, když je kontejner dost velký na to, aby se o něm dalo dohadovat.
4. KódTřídyTřídy uvnitř jedné komponenty, což je UML diagram tříd. Vygenerujte ho, nebo vynechte; kreslit tuhle úroveň ručně je nejrychlejší cesta k zastaralému diagramu.

Jak klesáte, publikum se zužuje. Úroveň 1 je pro kohokoli, koho systém zajímá, včetně lidí, kteří nikdy nepřečtou kód. Úroveň 4 je pro tým, v týdnu, kdy něco přestavuje. Ten spád je argumentem pro to, abyste nakreslili první dvě a zastavili se, dokud někdo nepožádá o víc.

02C4 je konvence, ne notace#

Právě tohle se ztrácí. C4 nedefinuje tvary, styly čar ani sémantiku vztahů. Říká vám, co patří na který diagram a pro koho je, a pak dodá: nakreslete to tak, jak váš tým kreslí věci tak jako tak.

Praktickým důsledkem je, že C4 se skládá s notací, kterou už máte, místo aby ji nahrazoval. Diagram kontejnerů nakreslený UML komponentami je zároveň legálním UML diagramem i správným C4 diagramem. Nakreslený v ArchiMate se tentýž obsah mapuje na aplikační komponenty a technologické uzly. Obojí je v pořádku. V pořádku není diagram, jehož boxy znamenají tři různé věci, protože nikdo neřekl, o kterou úroveň jde.

Protože tu není notace ke kontrole, disciplína musí přijít odjinud: označte každý box tím, co je, označte každou čáru tím, co dělá a jakým protokolem, a nikdy nemíchejte dvě úrovně na jednom plátně. Ta tři pravidla udělají většinu práce, kterou by za vás jinak udělala specifikace.

03Problémem je slovo kontejner#

C4 vznikl před nadvládou Dockeru a používá slovo kontejner v jeho starším, obecném významu: věc, která musí běžet, aby systém fungoval, a která se dá nasadit samostatně. Jednostránková aplikace je kontejner. Stejně tak databáze, serverless funkce, message broker a mobilní aplikace.

Úroveň 2 je tam, kde je většina hodnoty, a je to ta úroveň, kterou týmy vynechávají - zčásti kvůli názvu a zčásti proto, že je to první diagram, který si vynutí skutečné rozhodnutí o tom, čím systém vlastně je. Článek o diagramu kontejnerů jeden takový prochází od začátku do konce.

04Jak ho používat, aby nezastaral#

Sada C4 diagramů má stejný způsob selhání jako každá jiná architektonická dokumentace: v den nakreslení je přesná a za půl roku tiše špatná. Pomáhají dvě věci a ani jedna není o kreslení.

První je držet úrovně v jednom modelu, ne ve čtyřech nesouvisejících obrázcích. Pokud je API na vašem kontextovém diagramu a API na diagramu kontejnerů tentýž prvek, přejmenování je jedna úprava; pokud jsou to dva boxy, které náhodou sdílejí popisek, přejmenování jsou dvě úpravy a na jednu se zapomene. To je argument pro model za pohledy a je to tentýž argument, který zeširoka rozvádí udržování modelu aktuálním.

Druhá je kreslit méně úrovní. Kontextový diagram a diagram kontejnerů, které jsou pravdivé, jsou lepší než čtyři úrovně, z nichž dvě jsou fikce. Zejména úroveň 4 by se měla generovat z kódu, nebo vynechat - ručně kreslený diagram tříd je snímek názoru a kompilátor má aktuálnější.

Po jednom řádku na každé

  1. 01Čtyři úrovně, čtyři otázky: kdo to používá, jaké jsou díly, co je uvnitř dílu, jaké jsou třídy.
  2. 02C4 definuje obsah, ne notaci - kreslete ho tedy v UML, v ArchiMate nebo v obyčejných boxech, a buďte konzistentní.
  3. 03Kontejner je cokoli samostatně nasaditelného nebo spustitelného. S Dockerem to nemá nic společného.
  4. 04Kreslete úrovně 1 a 2, přidejte 3 tam, kde je potřeba rozhodnout spor, a 4 vygenerujte nebo vynechte.

05Časté dotazy#

Co znamená zkratka C4?

Context, Containers, Components a Code - čtyři úrovně detailu, od celého systému v jeho prostředí až po třídy uvnitř jedné komponenty. Ten název je obsah knihy.

Je C4 náhradou za UML?

Ne, a ani alternativou k němu. C4 říká, které čtyři diagramy kreslit a co na který patří; UML dává notaci s definovanou sémantikou. Skládají se: C4 diagram kontejnerů nakreslený notací UML komponent je legální UML diagram i správný C4 diagram.

Co je v C4 kontejner?

Něco, co musí běžet, aby systém fungoval, a co lze nasadit samostatně - webová aplikace, mobilní aplikace, API, databáze, message broker. Není to Docker kontejner a právě tato shoda názvů je nejčastějším zdrojem zmatku okolo modelu.

Musím nakreslit všechny čtyři úrovně?

Ne. Většina týmů nakreslí úrovně 1 a 2 a skončí. Úroveň 3 se vyplatí u kontejneru natolik složitého, že se o jeho vnitřku vedou spory, a úroveň 4 téměř nikdy - kód je už popisem kódu.

V této sérii

Související články

Všechny články