Architectuurdiagram
Architectuurdiagrammen worden gebruikt om de relaties tussen services en resources weer te geven die veel voorkomen in cloud- of CI/CD-implementaties. In een architectuurdiagram worden services (knooppunten) met lijnen verbonden. Gerelateerde services kunnen in groepen worden geplaatst om hun organisatie beter te illustreren.
Voorbeeld
Kopiëren
Insluiten
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
Syntaxis
De bouwstenen van een architectuurdiagram zijn: groepen, services, verbindingen en verbindingspunten.
Voor ondersteunde componenten wordt een pictogram gedeclareerd tussen ronde haakjes (), terwijl een label gedeclareerd wordt met de tekst tussen vierkante haken [].
Om een architectuurdiagram te beginnen, gebruik je de syntaxis architecture-beta en vermeld je vervolgens groepen, services, verbindingen en verbindingspunten. Hoewel deze 3 bouwstenen in willekeurige volgorde kunnen worden gedeclareerd, moet je ervoor zorgen dat de identificatie eerder al door een andere component is gedeclareerd.
Groep
De syntaxis voor het declareren van een groep is:
Kopiëren
Insluiten
group {group id}({icon name})[{title}] (in {parent id})?
Na combinatie:
Kopiëren
Insluiten
group public_api(cloud)[Public API]
Er is een groep met de naam public_api gemaakt, met het pictogram cloud en het label Public API.
Bovendien kan een groep met de optionele syntaxis in in een andere groep worden geplaatst.
Kopiëren
Insluiten
group private_api(cloud)[Private API] in public_api
Service
De syntaxis voor het declareren van een service is:
Kopiëren
Insluiten
service {service id}({icon name})[{title}] (in {parent id})?
Na combinatie:
Kopiëren
Insluiten
service database1(database)[My Database]
Er wordt een service met de naam database1 gemaakt, met het pictogram database en het label My Database.
Als de service tot een groep behoort, kan deze met de optionele syntaxis in daarin worden geplaatst
Kopiëren
Insluiten
service database1(database)[My Database] in private_api
Verbinding
De syntaxis voor het declareren van een verbinding is:
Kopiëren
Insluiten
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Richting van de verbinding
Aan welke kant van de service de verbinding uitgaat, kan worden gespecificeerd door aan de servicezijde van de verbindingspijl een dubbele punt : en L|R|T|B toe te voegen.
Bijvoorbeeld:
Kopiëren
Insluiten
db:R -- L:server
Maak een verbinding tussen de services db en server, die van de rechterkant van db naar de linkerkant van server loopt.
Kopiëren
Insluiten
db:T -- L:server
Maak een verbinding van 90 graden tussen de services db en server, die vanaf de bovenkant van db en de linkerkant van server uitgaat.
Pijl
Door aan de linkerkant voor de richting < toe te voegen, of aan de rechterkant na de richting >, kun je aan elke zijde van de verbinding een pijl toevoegen.
Bijvoorbeeld:
Kopiëren
Insluiten
subnet:R --> L:gateway
Maak een verbinding met een pijl die naar de gateway-service wijst.
Verbindingen buiten een groep
Om een verbinding van de ene groep naar een andere groep of naar een service in een andere groep te laten lopen, kun je na de serviceId de wijzigingsteken {group} toevoegen.
Bijvoorbeeld:
Kopiëren
Insluiten
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Maak een verbinding die vertrekt vanuit groupOne, naar de nabije locatie van server loopt en vervolgens groupTwo binnengaat en naar de nabije locatie van subnet loopt.
Houd er rekening mee dat groupId niet kan worden gebruikt om een verbinding te specificeren, en dat de wijzigingsteken {group} alleen kan worden gebruikt voor services binnen een groep.
Verbindingspunt
Een verbindingspunt is een speciaal soort knooppunt dat kan dienen als een potentieel vierrichtingsvertakkingspunt voor verbindingen.
De syntaxis voor het declareren van een verbindingspunt is:
Kopiëren
Insluiten
junction {junction id} (in {parent id})?
Kopiëren
Insluiten
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