Architekturdiagramm
Architekturdiagramme werden verwendet, um die Beziehungen zwischen Diensten und Ressourcen darzustellen, die in Cloud- oder CI/CD-Bereitstellungen üblich sind. In einem Architekturdiagramm werden Dienste (Knoten) durch Linien verbunden. Zugehörige Dienste können in Gruppen zusammengefasst werden, um ihre Organisation besser zu veranschaulichen.
Beispiel
Kopieren
Einbetten
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
Syntax
Die Bausteine eines Architekturdiagramms sind: Gruppen, Dienste, Verbindungen und Verbindungspunkte.
Für unterstützte Komponenten wird das Icon deklariert, indem es in runde Klammern () gesetzt wird, während das Label deklariert wird, indem der Text in eckige Klammern [] gesetzt wird.
Um ein Architekturdiagramm zu beginnen, verwendest du die architecture-beta-Syntax und listest dann Gruppen, Dienste, Verbindungen und Verbindungspunkte auf. Obwohl diese 3 Bausteine in beliebiger Reihenfolge deklariert werden können, muss sichergestellt werden, dass der Bezeichner zuvor von einer anderen Komponente deklariert wurde.
Gruppe
Die Syntax zum Deklarieren einer Gruppe lautet:
Kopieren
Einbetten
group {group id}({icon name})[{title}] (in {parent id})?
Nach der Kombination:
Kopieren
Einbetten
group public_api(cloud)[Public API]
Es wurde eine Gruppe namens public_api erstellt, unter Verwendung des Icons cloud und mit dem Label Public API.
Außerdem kann mit der optionalen in-Syntax eine Gruppe in einer anderen Gruppe platziert werden.
Kopieren
Einbetten
group private_api(cloud)[Private API] in public_api
Dienst
Die Syntax zum Deklarieren eines Dienstes lautet:
Kopieren
Einbetten
service {service id}({icon name})[{title}] (in {parent id})?
Nach der Kombination:
Kopieren
Einbetten
service database1(database)[My Database]
Erstellt einen Dienst namens database1, unter Verwendung des Icons database, mit dem Label My Database.
Wenn der Dienst zu einer Gruppe gehört, kann er mit der optionalen in-Syntax darin platziert werden
Kopieren
Einbetten
service database1(database)[My Database] in private_api
Verbindung
Die Syntax zum Deklarieren einer Verbindung lautet:
Kopieren
Einbetten
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Verbindungsrichtung
Auf welcher Seite des Dienstes die Verbindung austritt, kann angegeben werden, indem auf der Dienstseite des Verbindungspfeils ein Doppelpunkt : und L|R|T|B hinzugefügt wird.
Zum Beispiel:
Kopieren
Einbetten
db:R -- L:server
Erstellt eine Verbindung zwischen den Diensten db und server, die von der rechten Seite von db zur linken Seite von server verläuft.
Kopieren
Einbetten
db:T -- L:server
Erstellt eine 90-Grad-Verbindung zwischen den Diensten db und server, die von der Oberseite von db und der linken Seite von server ausgeht.
Pfeile
Indem du auf der linken Richtung ein < davor oder auf der rechten Richtung ein > danach hinzufügst, kann auf jeder Seite der Verbindung ein Pfeil hinzugefügt werden.
Zum Beispiel:
Kopieren
Einbetten
subnet:R --> L:gateway
Erstellt eine Verbindung, deren Pfeil auf den Dienst gateway zeigt.
Verbindungen außerhalb von Gruppen
Um eine Verbindung von einer Gruppe zu einer anderen Gruppe oder einem Dienst in einer anderen Gruppe zu führen, kannst du nach der serviceId einen {group}-Modifikator hinzufügen.
Zum Beispiel:
Kopieren
Einbetten
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Erstellt eine Verbindung, die von groupOne ausgeht, sich an eine Position neben server anschließt und dann in groupTwo eintritt und sich an eine Position neben subnet anschließt.
Es ist zu beachten, dass eine groupId nicht zur Angabe einer Verbindung verwendet werden kann und der {group}-Modifikator nur für Dienste innerhalb einer Gruppe verwendet werden kann.
Verbindungspunkt
Ein Verbindungspunkt ist ein besonderer Knotentyp, der als potenzieller vierteiliger Verzweigungspunkt einer Verbindung dienen kann.
Die Syntax zum Deklarieren eines Verbindungspunkts lautet:
Kopieren
Einbetten
junction {junction id} (in {parent id})?
Kopieren
Einbetten
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