Diagramma di architettura
Il diagramma di architettura mostra le relazioni tra servizi e risorse comuni nelle distribuzioni cloud o CI/CD. Nel diagramma di architettura, i servizi (nodi) sono collegati da linee. I servizi correlati possono essere collocati in gruppi, per illustrare meglio come sono organizzati.
Esempio
Copia
Incorpora
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
Sintassi
I blocchi costitutivi del diagramma di architettura sono: gruppi, servizi, collegamenti e punti di connessione.
Per i componenti che le supportano, le icone sono dichiarate racchiudendole tra parentesi tonde (), mentre le etichette sono dichiarate racchiudendo il testo tra parentesi quadre [].
Per iniziare un diagramma di architettura, devi usare la sintassi architecture-beta e poi elencare gruppi, servizi, collegamenti e punti di connessione. Sebbene questi 3 blocchi costitutivi possano essere dichiarati in qualsiasi ordine, devi assicurarti che l'identificatore sia già stato dichiarato in precedenza da un altro componente.
Gruppo
La sintassi per dichiarare un gruppo è:
Copia
Incorpora
group {group id}({icon name})[{title}] (in {parent id})?
Combinando:
Copia
Incorpora
group public_api(cloud)[Public API]
È stato creato un gruppo chiamato public_api, usando l'icona cloud e con l'etichetta Public API.
Inoltre, puoi collocare un gruppo dentro un altro gruppo usando la sintassi opzionale in.
Copia
Incorpora
group private_api(cloud)[Private API] in public_api
Servizio
La sintassi per dichiarare un servizio è:
Copia
Incorpora
service {service id}({icon name})[{title}] (in {parent id})?
Combinando:
Copia
Incorpora
service database1(database)[My Database]
Crea il servizio chiamato database1, usando l'icona database, con l'etichetta My Database.
Se il servizio appartiene a un gruppo, puoi collocarlo al suo interno usando la sintassi opzionale in
Copia
Incorpora
service database1(database)[My Database] in private_api
Collegamento
La sintassi per dichiarare un collegamento è:
Copia
Incorpora
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Direzione del collegamento
Da quale lato del servizio esce il collegamento può essere specificato aggiungendo i due punti : sul lato del servizio della freccia di collegamento e aggiungendo L|R|T|B.
Ad esempio:
Copia
Incorpora
db:R -- L:server
Crea un collegamento tra i servizi db e server, che si estende dal lato destro di db al lato sinistro di server.
Copia
Incorpora
db:T -- L:server
Crea un collegamento a 90 gradi tra i servizi db e server, che parte dalla parte superiore di db e dal lato sinistro di server.
Freccia
Aggiungendo < prima della direzione a sinistra, oppure > dopo la direzione a destra, puoi aggiungere una freccia su ciascun lato del collegamento.
Ad esempio:
Copia
Incorpora
subnet:R --> L:gateway
Crea un collegamento con una freccia che punta al servizio gateway.
Collegamenti esterni al gruppo
Per far passare un collegamento da un gruppo a un altro gruppo o a un servizio dentro un altro gruppo, puoi aggiungere il modificatore {group} dopo serviceId.
Ad esempio:
Copia
Incorpora
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Crea un collegamento che parte da groupOne, si collega in prossimità di server, poi entra in groupTwo e si collega in prossimità di subnet.
Da notare che groupId non può essere usato per specificare un collegamento, mentre il modificatore {group} può essere usato solo per i servizi all'interno di un gruppo.
Punto di connessione
Il punto di connessione è un tipo speciale di nodo che può fungere da potenziale punto di diramazione a quattro vie di un collegamento.
La sintassi per dichiarare un punto di connessione è:
Copia
Incorpora
junction {junction id} (in {parent id})?
Copia
Incorpora
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