Процесс Тип
Графическое выражение
Мышление Тип
Структурированное выражение
Заметки Тип
Эффективное выражение

Диаграмма архитектурыСинтаксис

Диаграмма архитектуры

Диаграмма архитектуры используется для отображения отношений между сервисами и ресурсами, типичными для облачных развёртываний или развёртываний CI/CD. На диаграмме архитектуры сервисы (узлы) соединяются линиями. Связанные сервисы можно помещать в группы, чтобы лучше показать способ их организации.

Пример

Код
                            
Копировать
Встраивание
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

Синтаксис

Строительными блоками диаграммы архитектуры являются: группы, сервисы, соединения и точки соединения.

Для поддерживаемых компонентов значок объявляется путём заключения значка в круглые скобки (), а метка объявляется путём заключения текста в квадратные скобки [].

Чтобы начать диаграмму архитектуры, нужно использовать синтаксис architecture-beta, затем перечислить группы, сервисы, соединения и точки соединения. Хотя эти 3 строительных блока можно объявлять в любом порядке, необходимо убедиться, что идентификатор уже был ранее объявлен другим компонентом.

Группа

Синтаксис объявления группы таков:

                            
Копировать
Встраивание
group {group id}({icon name})[{title}] (in {parent id})?

В совокупности:

                            
Копировать
Встраивание
group public_api(cloud)[Public API]

Создаётся группа с именем public_api, использующая значок cloud, с меткой Public API.

Кроме того, можно с помощью необязательного синтаксиса in поместить группу в другую группу.

                            
Копировать
Встраивание
group private_api(cloud)[Private API] in public_api

Сервис

Синтаксис объявления сервиса таков:

                            
Копировать
Встраивание
service {service id}({icon name})[{title}] (in {parent id})?

В совокупности:

                            
Копировать
Встраивание
service database1(database)[My Database]

Создаётся сервис с именем database1, использующий значок database, с меткой My Database.

Если этот сервис принадлежит некоторой группе, его можно поместить в неё с помощью необязательного синтаксиса in

                            
Копировать
Встраивание
service database1(database)[My Database] in private_api

Соединение

Синтаксис объявления соединения таков:

                            
Копировать
Встраивание
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?

Направление соединения

С какой стороны сервиса выходит соединение, можно указать, добавив на стороне сервиса в соединении двоеточие : и L|R|T|B.

Например:

                            
Копировать
Встраивание
db:R -- L:server

Создать соединение между сервисами db и server, которое идёт от правой стороны db к левой стороне server.

                            
Копировать
Встраивание
db:T -- L:server

Создать соединение под 90 градусов между сервисами db и server, которое идёт от верхней части db и левой стороны server.

Стрелка

Добавив < перед направлением слева или > после направления справа, можно добавить стрелки на каждую сторону соединения.

Например:

                            
Копировать
Встраивание
subnet:R --> L:gateway

Создать соединение со стрелкой, указывающей на сервис gateway.

Соединения между группами

Чтобы соединение переходило из одной группы в другую группу или к сервису в другой группе, можно добавить модификатор {group} после serviceId.

Например:

                            
Копировать
Встраивание
service server[Server] in groupOne service subnet[Subnet] in groupTwo server{group}:B --> T:subnet{group}

Создать соединение, которое начинается от groupOne, соединяется рядом с server, затем входит в groupTwo и соединяется рядом с subnet.

Следует учесть, что groupId нельзя использовать для указания соединения, а модификатор {group} можно применять только к сервисам внутри группы.

Точка соединения

Точка соединения — это особый тип узла, который может служить потенциальной точкой четырёхстороннего разветвления соединений.

Синтаксис объявления точки соединения таков:

                            
Копировать
Встраивание
junction {junction id} (in {parent id})?
Код
                            
Копировать
Встраивание
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