Arkitekturdiagram
Arkitekturdiagrammer bruges til at vise relationerne mellem tjenester og ressourcer, som er almindelige i cloud- eller CI/CD-udrulninger. I arkitekturdiagrammer forbindes tjenester (knuder) med linjer. Relaterede tjenester kan placeres i grupper for bedre at illustrere, hvordan de er organiseret.
Eksempel
Kopiér
Integrer
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
Syntaks
Byggeklodserne i et arkitekturdiagram er: grupper, tjenester, forbindelseslinjer og forbindelsespunkter.
For understøttede komponenter deklareres ikonet med runde parenteser () omkring ikonet, mens etiketten deklareres med kantede parenteser [] omkring teksten.
For at begynde et arkitekturdiagram skal du bruge architecture-beta-syntaksen og derefter opliste grupper, tjenester, forbindelseslinjer og forbindelsespunkter. Selvom disse 3 byggeklodser kan deklareres i vilkårlig rækkefølge, skal du sikre, at identifikatoren allerede er deklareret af en anden komponent.
Gruppe
Syntaksen til at deklarere en gruppe er:
Kopiér
Integrer
group {group id}({icon name})[{title}] (in {parent id})?
Kombineret:
Kopiér
Integrer
group public_api(cloud)[Public API]
Der oprettes en gruppe ved navn public_api med ikonet cloud og etiketten Public API.
Derudover kan en gruppe placeres i en anden gruppe med den valgfrie in-syntaks.
Kopiér
Integrer
group private_api(cloud)[Private API] in public_api
Tjeneste
Syntaksen til at deklarere en tjeneste er:
Kopiér
Integrer
service {service id}({icon name})[{title}] (in {parent id})?
Kombineret:
Kopiér
Integrer
service database1(database)[My Database]
Der oprettes en tjeneste ved navn database1 med ikonet database og etiketten My Database.
Hvis tjenesten tilhører en gruppe, kan den placeres i den med den valgfrie in-syntaks
Kopiér
Integrer
service database1(database)[My Database] in private_api
Forbindelseslinje
Syntaksen til at deklarere en forbindelseslinje er:
Kopiér
Integrer
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Forbindelseslinjens retning
Hvilken side af tjenesten forbindelseslinjen udgår fra, kan angives ved at tilføje et kolon : på den side af forbindelsespilen, hvor tjenesten er, og tilføje L|R|T|B.
For eksempel:
Kopiér
Integrer
db:R -- L:server
Der oprettes en forbindelseslinje mellem tjenesterne db og server, og denne linje strækker sig fra højre side af db til venstre side af server.
Kopiér
Integrer
db:T -- L:server
Der oprettes en 90-graders forbindelseslinje mellem tjenesterne db og server, og denne linje udgår fra toppen af db og venstre side af server.
Pile
Ved at tilføje < før retningen til venstre eller > efter retningen til højre kan der tilføjes pile på hver side af forbindelseslinjen.
For eksempel:
Kopiér
Integrer
subnet:R --> L:gateway
Der oprettes en forbindelseslinje med en pil, der peger mod tjenesten gateway.
Forbindelser uden for en gruppe
For at lade en forbindelseslinje gå fra én gruppe til en anden gruppe eller til en tjeneste i en anden gruppe kan du tilføje {group}-modifikatoren efter serviceId.
For eksempel:
Kopiér
Integrer
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Der oprettes en forbindelseslinje, der starter i groupOne, forbindes til positionen nær server og derefter går ind i groupTwo og forbindes til positionen nær subnet.
Bemærk, at groupId ikke kan bruges til at angive forbindelseslinjer, og at {group}-modifikatoren kun kan bruges til tjenester i en gruppe.
Forbindelsespunkt
Et forbindelsespunkt er en særlig type knude, der kan fungere som et potentielt firevejsforgreningspunkt for forbindelseslinjer.
Syntaksen til at deklarere et forbindelsespunkt er:
Kopiér
Integrer
junction {junction id} (in {parent id})?
Kopiér
Integrer
architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction junctionCenter
junction junctionRight
left_disk:R -- L:junctionCenter
top_disk:B -- T:junctionCenter
bottom_disk:T -- B:junctionCenter
junctionCenter:R -- L:junctionRight
top_gateway:B -- T:junctionRight
bottom_gateway:T -- B:junctionRight