Diagrama de arquitectura
El diagrama de arquitectura se usa para mostrar las relaciones entre servicios y recursos habituales en despliegues en la nube o CI/CD. En el diagrama de arquitectura, los servicios (nodos) se conectan mediante líneas. Los servicios relacionados pueden colocarse en grupos para ilustrar mejor cómo se organizan.
Ejemplo
Copiar
Insertar
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
Sintaxis
Los bloques de construcción del diagrama de arquitectura son: grupos, servicios, enlaces y puntos de conexión.
Para los componentes compatibles, el icono se declara encerrándolo entre paréntesis () y la etiqueta se declara encerrando el texto entre corchetes [].
Para empezar un diagrama de arquitectura, hay que usar la sintaxis architecture-beta y luego enumerar los grupos, servicios, enlaces y puntos de conexión. Aunque estos 3 bloques de construcción pueden declararse en cualquier orden, hay que asegurarse de que el identificador ya haya sido declarado antes por otro componente.
Grupo
La sintaxis para declarar un grupo es:
Copiar
Insertar
group {group id}({icon name})[{title}] (in {parent id})?
Combinado:
Copiar
Insertar
group public_api(cloud)[Public API]
Se crea un grupo llamado public_api, que usa el icono cloud y lleva la etiqueta Public API.
Además, puedes colocar un grupo dentro de otro grupo con la sintaxis opcional in.
Copiar
Insertar
group private_api(cloud)[Private API] in public_api
Servicio
La sintaxis para declarar un servicio es:
Copiar
Insertar
service {service id}({icon name})[{title}] (in {parent id})?
Combinado:
Copiar
Insertar
service database1(database)[My Database]
Crea un servicio llamado database1, que usa el icono database y lleva la etiqueta My Database.
Si el servicio pertenece a un grupo, puedes colocarlo dentro con la sintaxis opcional in
Copiar
Insertar
service database1(database)[My Database] in private_api
Enlace
La sintaxis para declarar un enlace es:
Copiar
Insertar
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Dirección del enlace
Puedes especificar por qué lado del servicio sale el enlace añadiendo dos puntos : en el lado del servicio de la flecha de conexión y añadiendo L|R|T|B.
Por ejemplo:
Copiar
Insertar
db:R -- L:server
Crea un enlace entre los servicios db y server; este enlace se extiende desde el lado derecho de db hasta el lado izquierdo de server.
Copiar
Insertar
db:T -- L:server
Crea un enlace de 90 grados entre los servicios db y server; este enlace sale de la parte superior de db y del lado izquierdo de server.
Flecha
Puedes añadir una flecha en cada lado del enlace añadiendo < delante de la dirección izquierda, o > después de la dirección derecha.
Por ejemplo:
Copiar
Insertar
subnet:R --> L:gateway
Crea un enlace con una flecha que apunta al servicio gateway.
Enlace fuera del grupo
Para que un enlace pase de un grupo a otro grupo o a un servicio dentro de otro grupo, puedes añadir el modificador {group} después de serviceId.
Por ejemplo:
Copiar
Insertar
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Crea un enlace que parte de groupOne, se conecta cerca de server y luego entra en groupTwo, conectándose cerca de subnet.
Hay que tener en cuenta que groupId no puede usarse para especificar un enlace, y el modificador {group} solo puede usarse para servicios dentro de un grupo.
Punto de conexión
El punto de conexión es un tipo especial de nodo que puede servir como posible punto de bifurcación en cuatro direcciones de un enlace.
La sintaxis para declarar un punto de conexión es:
Copiar
Insertar
junction {junction id} (in {parent id})?
Copiar
Insertar
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