Декларативные диаграммы приложений в Yandex.Cloud
В предыдущих постах я рисовал пояснительные диаграммы в 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 и удачи вам в рисовании диаграмм;)