Skip to content
Language:hu Author:Laborci Gergely
architecture

Architektúraábrák olvasása: C4, szekvencia és állapot

Célok

A lecke végére el tudod dönteni, milyen kérdésre válaszol egy architektúraábra, fel tudod ismerni a C4-modell szintjeit, és értelmezni tudod a szekvencia- és állapotdiagramot.

Miért nem elég egyetlen ábra?

Egy ábra mindig egy kérdésre felel. Ha egyetlen rajzra kerülnek a felhasználók, a modulok, az adatbázistáblák és a szerverpéldányok, az olvasó nem tudja, milyen szinten kell értelmeznie a nyilakat. A tananyag ábrái ezért mindig megnevezik, melyik nézetet mutatják (lásd 1.1).

A C4-modell

A C4-modell egymásba nagyítható nézeteket ad; a négy szint a Context, Container, Component és Code.

Szint Mit mutat? Kinek hasznos?
Context A rendszert egyetlen dobozként, a felhasználókkal és a külső rendszerekkel Mindenkinek
Container A futtatható egységeket: alkalmazást, adattárolót Fejlesztőknek, üzemeltetőknek
Component Egy container belső felelősségeit Az adott egységen dolgozóknak
Code Osztályokat, interfészeket Csak ha egy megoldást meg kell érteni

A C4-ben a container alkalmazást vagy adattárolót jelent; nem feltétlenül Docker-konténert. A szintekből csak a kérdéshez szükségeseket érdemes használni.

flowchart LR
  U["Felhasználó"] -->|"használja"| S["A vizsgált rendszer"]
  S -->|"kérést küld"| X["Külső rendszer"]

Az ábra egy C4-szemléletű Context-nézet általános Mermaid-jelöléssel; a dobozok nem hivatalos C4-ikonok, a szintet a cím és a felirat adja.

Szekvenciadiagram

A szekvenciadiagram az együttműködő résztvevők üzeneteit időrendben mutatja: a függőleges vonalak a résztvevők, az idő felülről lefelé halad. Azt magyarázza, ki kivel kommunikál és milyen sorrendben. Az idők nem skálaarányosak: két nyíl távolsága nem jelent mért késleltetést.

sequenceDiagram
  participant K as Kliens
  participant S as Szolgáltatás
  K->>S: Kérés
  alt Siker
    S-->>K: Eredmény
  else Hiba
    S-->>K: Hibajelzés
  end

Az alt alternatív útvonalat jelöl. A folytonos nyíl kérést, a szaggatott választ jelent; a választ nem kell sikernek érteni.

Állapotdiagram

Az állapotdiagram egyetlen elem lehetséges állapotait és az átmeneteket mutatja. Azt mondja meg, mit szabad csinálni, ha az elem egy adott állapotban van.

stateDiagram-v2
  [*] --> Varakozik
  Varakozik --> Fut: felvették
  Fut --> Kesz: siker
  Fut --> Hibas: végleges hiba
  Kesz --> [*]

A két diagram egymást egészíti ki: a szekvencia a kommunikációt, az állapotdiagram a következményt mutatja. A hiányzó átmenet nem jelenti, hogy a valóságban nem érkezhet ilyen üzenet; a késői vagy ismételt üzenetet is kezelni kell.

Az ábra ellenőrzése

Olvasáskor három kérdés segít: melyik nézetet látom, mit jelentenek a nyilak (irány, kezdeményező, szinkron vagy aszinkron), és mi maradt ki. Egy nyíl, amelyen csak az áll, hogy „kapcsolódik”, nem mondja meg, ki kezdeményez és mit kér.

Gyakori tévhitek

Állítás Pontosítás
„A C4 container Docker-konténer.” Futtatható alkalmazást vagy adattárolót jelent.
„A szekvenciadiagram időskálát is mutat.” Csak sorrendet mutat; az időt külön meg kell adni.
„Ha az ábrán nincs ilyen nyíl, nem történhet meg.” A valóságban érkezhetnek az ábrán nem szereplő, késői vagy ismételt üzenetek.
„Egy jó ábra elég a rendszer leírására.” Minden ábra egy kérdésre felel; több nézet kell.

Röviden

  • Egy ábra egy kérdésre válaszol, és meg kell neveznie a nézetét.
  • A C4 négy szintje: Context, Container, Component, Code.
  • A szekvenciadiagram a sorrendet, az állapotdiagram az életciklust mutatja.
  • A nyíl jelentését mindig meg kell adni.

Ellenőrző kérdések

  1. Melyik C4-szintet használnád egy külső partnernek szánt áttekintéshez, és melyiket a belső felépítés magyarázatához?
  2. Mit nem mutat a szekvenciadiagram?
  3. Miért nem elég „kapcsolódik” felirat egy nyílra?

Források

Prerequisites (1)

  • szoftverarchitektúra

Teaches (3)

  • C4-modell
  • szekvenciadiagram
  • állapotdiagram