Перейти к основному содержимому

Декларативные диаграммы приложений в Yandex.Cloud

· 2 мин. чтения

В предыдущих постах я рисовал пояснительные диаграммы в draw.io. Это крутой инструмент, но проблема в том, что если я заметил опечатку в картинке, то чтобы поправить ее мне нужно найти, где я сохранил эту диаграмму, поправить руками и перерендерить файл с диаграммой. Мне стало интересно можно ли делать по-другому.

И я нашел инструмент для декларативного описания диаграмм и их рендеринга. Была маленькая проблема, что там не было иконок для Yandex.Cloud. Но я это поправил.

Про инструмент

К посту про снепшоты по крону я нарисовал следующую диаграмму:

Её мы и возьмем как пример:

from diagrams import Diagram
from diagrams import Group
from diagrams.yc.infrastructure import Compute
from diagrams.yc.serverless import ServerlessFunctions
from diagrams.yc.serverless import ServerlessTriggers
from diagrams.yc.serverless import YMQ

with Diagram("Create Snapshots", show=False, direction="LR", curvestyle="polyline"):
cron = ServerlessTriggers("Cron Trigger")
spawn = ServerlessFunctions("Spawn Function")
ymq = YMQ("YMQ")
queue_trigger = ServerlessTriggers("Queue Trigger")

with Group("Snapshot Functions", direction="TB"):
snapshot_functions = [ServerlessFunctions() for i in range(3)]

snapshot_serv = Compute("Snapshot\nService")

cron >> spawn >> ymq >> queue_trigger

queue_trigger >> snapshot_functions >> snapshot_serv

Меня очень радует в этом подходе емкость и лаконичность питона.

И вот какой результат мы получаем на выходе:

Вот репозторий с кодом https://github.com/nikolaymatrosov/diagrams и удачи вам в рисовании диаграмм;)