Как стать автором
Обновить

Нотация моделирования архитектуры С4 — примеры диаграмм и инструменты

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров42K
Всего голосов 8: ↑8 и ↓0+8
Комментарии9

Комментарии 9

Недавно открыл для себя mermaid как доступный способ кодом "рисовать" диаграммы. Поддерживаются различные виды, в том числе в бете поддреживаются С4 диаграммы. Автоматически рендерится в схемы на гитлабе, обсидиане. В вскод тоже работает, как минимум с установкой расширения (точно не помню). Т.е. можно без каких-либо отдельных инструментов вести ту же документацию сразу в гит-репозиториях в маркдауне и при этом не надо тащить картинками схемы - все изменения будут фиксироваться, как и изменения другого текста.

В Visio нет наборов элементов для рисования C4

Нужны шаблоны, как для miro. По отзывам коллег-аналитиков его тоже используют, поэтому включила. Уточнила в статье, благодарю за комментарий!

Самое интересное начинается дальше, когда начинает появляется необходимость контроля версий, деление на слои, модули и их внутренние связи и согласованность

Тогда на помощь приходят системы для управления корпоративной архитектуры, такие как iserver и leanix и другие

Описание диаграмм кодом это пока очень грустно, так как autolayout пока что умеет работать с 4-5 квадратами и 8-10 стрелками. Когда их становится больше, а их всегда больше в реальных диаграммах реальных систем, то ты сначала вынужден тратить кучу времени на написание кода (это всегда дольше, чем в графическом редакторе из готового набора элементов drag'n'drop'ом вытянуть квадратик или стрелочку), а потом еще в 10 раз больше времени на то, чтобы потом все расставить так, чтобы это было хоть сколько-нибудь читаемо.

Также в вашем примере с GetDelivery на С2 и С3 все перемешалось в кучу. Поизучайте, что есть Container и что есть Component и как эти абстракции вкладываются друг в друга на диаграммах. Половина ваших компонент на уровне С3 это на самом деле контейнеры с уровня С2 (если не все вообще). Просто попробуйте запихнуть это в тот же structurizr, поймете о чем я?

Уровень C4 использую как Cases, особенно для обозначения слайсов и вообще динамики развития архитектуры.

В защиту PlantUML скажу, что регулярно выходят для него обновления. Я использую в связке с VSCode. Регулярно обновляю и пока проблем не замечал, даже с «весомыми» диаграммами??

Диаграмма контекста в примере с GetDelivery некорректна: база данных, очередь и балансировщик должны быть отдельными контейнерами. Впрочем, балансировщик автор нотации вообще рекомендует указывать на отдельной диаграмме развёртывания.

🔺 Container

Описывает верхнеуровневую архитектуру и технологии. Используется для понимания технологического стека и разделения зон ответственности.

Элементы:
- контейнеры (например, веб-приложения, базы данных),

У вас пример в GetDelivery почему-то БД помещена на уровень компонентов, в то время как в других диаграммах она на уровне контейнеров. Примеры из интернета тоже помещают БД на уровень контейнеров. Да и ваши слова намекают на то, что БД должны быть на уровне контейнеров.

Почему тогда GetDelivery не содержит БД на уровне контейнеров?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории