Architektūros diagrama
Architektūros diagrama naudojama ryšiams tarp paslaugų ir išteklių, įprastų debesijos ar CI/CD diegimuose, parodyti. Architektūros diagramoje paslaugos (mazgai) jungiamos linijomis. Susijusias paslaugas galima dėti į grupes, kad būtų geriau parodyta jų organizavimo struktūra.
Pavyzdys
Kopijuoti
Įterpti
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
Sintaksė
Architektūros diagramos sudedamosios dalys yra: grupės, paslaugos, jungtys ir sujungimo taškai.
Palaikomiems komponentams piktogramos deklaruojamos apgaubiant jas paprastais skliaustais (), o žymekliai – apgaubiant tekstą laužtiniais skliaustais [].
Norėdami pradėti architektūros diagramą, turite naudoti architecture-beta sintaksę, o tada išvardyti grupes, paslaugas, jungtis ir sujungimo taškus. Nors šios 3 sudedamosios dalys gali būti deklaruojamos bet kokia tvarka, būtina užtikrinti, kad identifikatorių jau būtų anksčiau deklaravęs kitas komponentas.
Grupė
Grupės deklaravimo sintaksė:
Kopijuoti
Įterpti
group {group id}({icon name})[{title}] (in {parent id})?
Sujungus:
Kopijuoti
Įterpti
group public_api(cloud)[Public API]
Sukuriama grupė, pavadinta public_api, naudojanti piktogramą cloud ir turinti žymeklį Public API.
Be to, naudojant neprivalomą in sintaksę grupę galima įdėti į kitą grupę.
Kopijuoti
Įterpti
group private_api(cloud)[Private API] in public_api
Paslauga
Paslaugos deklaravimo sintaksė:
Kopijuoti
Įterpti
service {service id}({icon name})[{title}] (in {parent id})?
Sujungus:
Kopijuoti
Įterpti
service database1(database)[My Database]
Sukuriama paslauga, pavadinta database1, naudojanti piktogramą database ir turinti žymeklį My Database.
Jei ši paslauga priklauso grupei, ją galima įdėti į ją naudojant neprivalomą in sintaksę
Kopijuoti
Įterpti
service database1(database)[My Database] in private_api
Jungtis
Jungties deklaravimo sintaksė:
Kopijuoti
Įterpti
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Jungties kryptis
Kurioje paslaugos pusėje jungtis išeina, galima nurodyti jungties rodyklės paslaugos pusėje pridėjus dvitaškį : ir L|R|T|B.
Pavyzdžiui:
Kopijuoti
Įterpti
db:R -- L:server
Tarp paslaugų db ir server sukuriama jungtis, kuri tęsiasi nuo db dešinės pusės iki server kairės pusės.
Kopijuoti
Įterpti
db:T -- L:server
Tarp paslaugų db ir server sukuriama 90 laipsnių jungtis, kuri išeina nuo db viršaus ir server kairės pusės.
Rodyklė
Prieš kairiosios pusės kryptį pridėjus mažesnio ženklą, arba po dešiniosios pusės krypties pridėjus didesnio ženklą, galima pridėti rodykles kiekvienoje jungties pusėje.
Pavyzdžiui:
Kopijuoti
Įterpti
subnet:R --> L:gateway
Sukuriama jungtis su rodykle, nukreipta į gateway paslaugą.
Jungtis už grupės ribų
Norint, kad jungtis pereitų iš vienos grupės į kitą grupę ar į kitos grupės paslaugą, po serviceId galima pridėti {group} modifikatorių.
Pavyzdžiui:
Kopijuoti
Įterpti
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Sukuriama jungtis, kuri pradeda nuo groupOne, prisijungia prie server artimos vietos, tada patenka į groupTwo ir prisijungia prie subnet artimos vietos.
Reikia atkreipti dėmesį, kad groupId negali būti naudojamas jungčiai nurodyti, o {group} modifikatorius gali būti naudojamas tik grupės viduje esančioms paslaugoms.
Sujungimo taškas
Sujungimo taškas yra specialus mazgo tipas, galintis tarnauti kaip galimas keturių krypčių jungčių išsišakojimo taškas.
Sujungimo taško deklaravimo sintaksė:
Kopijuoti
Įterpti
junction {junction id} (in {parent id})?
Kopijuoti
Įterpti
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