
Каждый архитектор сталкивается с вечной дилеммой: как правильно документировать архитектуру, чтобы она была понятна людям и одновременно пригодна для автоматизации? Сегодня разберем три основных подхода и выясним, когда какой использовать.
Проблемы архитектурной документации
Современная документация архитектуры должна решать множество задач одновременно. Она должна быть понятна разработчикам, архитекторам и бизнесу, поддерживать версионирование, интегрироваться в CI/CD процессы и оставаться актуальной. Стартапы, в большинстве случаев, либо не имеют документацию по архитектуре, либо она в очень примитивном виде и не может быть использована другими специалистами. Когда становиться более зрелым очень часто случается так что документация не соответствует реальной архитектуре в продакшене, что приводит к задержкам при добавление новых фичей, проблемам безопасности и ограничениям масштабируемости.
Ключевые проблемы традиционных подходов:
Быстро устаревание диаграмм
Сложность синхронизации с кодом
Отсутствие автоматизации
Различные уровни детализации для разных систем, продуктов
Сложность версионирования визуальных артефактов
Модель С4: Иерархия абстракций
Модель C4, созданная Саймоном Брауном, представляет собой простой подход к визуализации архитектуры программного обеспечения через четыре уровня абстракции.
Уровень 1: Contex (Контекст)
Показывает систему в окружении пользователей и внешних систем. Это “вид с птичьего полета” — идеален для презентаций бизнесу и стейкхолдерам (и почему в русском языке нет слова близкому по значению, прошу прощения за англицизмы). Представьте что вы летите на самолете и видите под собой большой город из которого выходит много дорог к другими городам и поселкам, так вот большой город это система, а другие города и поселки это внешнее окружение, дороги же являются связями.
Уровень 2: Container (Контейнеры)
Разбивает систему на основные исполняемые компоненты: веб-приложения, API, базы данных, микросервисы. Подходит для архитекторов и техлидов. А теперь представьте что мы пересели на небольшой самолет и спустились ниже, мы летим над городом и видим, порт, центр, завод. Вот это и есть контейнеры т.е. то что можно ограничить и выделить определенные функции.
Уровень 3: Components (Компоненты)
Детализирует внутреннюю структуру контейнеров, показывая модули, сервисы, контроллеры. Необходим разработчикам для понимания внутренней архитектуры. Тут еще проще представить это в виде завода. Склад, здание цеха (производства), здание управления (офисы). Так завод превращается во вполне организованную и понятную структуру.
Уровень 4: Code (Код)
На этот уровень редко кто приходит, это поле деятельности для разработчиков. UML диаграммы классов, часто автогенерируемые из кода. В данные момент большинство IDE справляются с этой задачей, обычно в виде структур. Для упрощения понимания это склад изнутри, секции со стелажами, имея карту можно легко найти что необходимо.
Преимущества C4 модели
Простота и доступность: C4 не требует изучения сложных нотаций. Используются простые блоки и стрелки, что делает диаграммы понятными даже нетехническим специалистам.
Иерархическая структура: Возможность показать архитектуру на разных уровнях детализации позволяет удовлетворить потребности различных аудиторий — от CEO до разработчиков.
Широкая инструментальная поддержка: Поддерживается множеством инструментов — от Structurizr и PlantUML до Miro и Lucidchart. Самый популярный инструмент для работы Drawio.
Недостатки C4 модели
Ограниченная машиночитаемость: Визуальные диаграммы сложно автоматически валидировать, анализировать или генерировать из кода.
Проблемы с версионированием: Сложно отслеживать изменения в визуальных диаграммах через систему контроля версий.
Ручное поддержание актуальности: Требует постоянных усилий для синхронизации с реальным состоянием системы.

YAML: Архитектура как код
YAML (YAML Ain’t Markup Language) изначально создавался как человекочитаемый формат сериализации данных. В контексте документирования архитектуры YAML позволяет создавать Architecture as Code — подход, при котором архитектура описывается в текстовом формате и может быть обработана автоматически.
Структуризованное описание архитектуры
Современные инструменты, такие как Structurizr DSL, позволяют описывать C4 модели в YAML-подобном синтаксисе:
workspace:
name: "Banking System"
model:
people:
- name: "Customer"
description: "Bank customer"
systems:
- name: "Internet Banking"
containers:
- name: "Web Application"
technology: "React"
- name: "API Gateway"
technology: "Kong"
- name: "Database"
technology: "PostgreSQL"
Преимущества YAML-подхода
Превосходная машиночитаемость: YAML файлы легко парсятся, валидируются и обрабатываются автоматически. Это открывает возможности для автоматической генерации диаграмм, валидации архитектурных правил и интеграции в CI/CD пайплайны.
Отличное версионирование: Текстовые файлы идеально подходят для Git — можно легко отслеживать изменения, делать code review архитектурных решений, использовать branching strategies.
Высокий уровень автоматизации: Возможность генерировать множественные представления из единого источника истины — C4 диаграммы, PlantUML, Mermaid, API документацию.
Интеграция с разработкой: YAML файлы можно хранить рядом с кодом, что повышает вероятность актуализации документации при изменениях в системе.
Недостатки YAML-подхода
Ограниченная визуальная наглядность: Текстовый формат не так интуитивно понятен, как диаграммы, особенно для нетехнических специалистов.
Порог входа: Требует изучения синтаксиса и понимания структуры данных, что может быть сложно для начинающих архитекторов.
Зависимость от инструментов: Для эффективного использования необходимы специализированные инструменты для визуализации и валидации.
Blocks & Lines: Классический подход
Традиционный подход “блоки и линии” представляет собой создание архитектурных диаграмм в графических редакторах (Visio, Draw.io, Lucidchart) без строгой методологии или стандартизации. Часто используется для набросков и оформления брейнштормов.
Характеристики подхода
Максимальная гибкость: Возможность создавать любые диаграммы в любом стиле без ограничений нотации.
Низкий порог входа: Не требует изучения специальных методологий — достаточно базовых навыков работы с графическими редакторами.
Визуальная выразительность: Полный контроль над внешним видом, возможность создания красивых презентационных материалов.
Проблемы традиционного подхода
Отсутствие стандартизации: Каждый архитектор использует собственную нотацию, что затрудняет понимание и поддержку диаграмм другими специалистами.
Сложности с версионированием: Бинарные файлы (Visio, Draw.io) плохо подходят для систем контроля версий.
Проблемы с масштабированием: Сложно поддерживать консистентность в больших проектах с множеством диаграмм.
Отсутствие автоматизации: Невозможность автоматической генерации, валидации или интеграции с другими инструментами разработки.

Переходы между подходами
Миграция с Blocks & Lines
Постепенный переход: Существующие диаграммы можно постепенно стандартизировать под C4 модель, а затем перевести в машиночитаемый формат.
Сохранение инвестиций: Визуальные элементы можно сохранить через экспорт в различные форматы представления.
C4 в YAML
Прямой переход: Большинство C4 диаграмм можно вручную перевести в Structurizr DSL, сохранив всю семантику.
Инструментальная поддержка: Некоторые инструменты поддерживают импорт C4 диаграмм в текстовые форматы.
YAML = множественным представлениям
Из YAML можно автоматически генерировать:
C4 диаграммы различных уровней
PlantUML схемы
Mermaid диаграммы
API документацию
Архитектурные тесты
Современные инструменты поддерживают экспорт в PNG, SVG, PDF для включения в презентации и документы.
Будущие тенденции
AI-Enhanced документирование
Искусственный интеллект уже начинает влиять на архитектурную документацию.
Автоматическое извлечение архитектуры из кода
Генерация диаграмм по текстовым описаниям
Валидация согласованности между документацией и реализацией
Автоматическое обновление документации при изменениях в коде
Живая архитектура
Концепция “живой архитектуры” предполагает:
Реальное время синхронизации между кодом и документацией
Автоматическое обнаружение архитектурных паттернов
Непрерывная валидация архитектурных правил
Интерактивные диаграммы с drill-down возможностями
Практический выбор в 2025 году
Выбор подхода к документированию архитектуры зависит от контекста, но общие тренды указывают на гибридные решения:
Для большинства команд оптимальна стратегия:
Машиночитаемая основа (YAML) как источник истины
Автоматическая генерация визуальных представлений (C4, PlantUML)
Интеграция в процессы разработки через CI/CD
Множественные форматы для разных аудиторий
Ключевые принципы успешной архитектурной документации:
Близость к коду повышает актуальность
Автоматизация снижает overhead и ошибки
Визуализация улучшает понимание
Стандартизация обеспечивает консистентность
Версионирование сохраняет историю решений
А как же Archimate и TOGAF?
Хороший вопрос и на него сложно ответить однозначно. Возможно я посвящу этому отдельную статью в будущем. Но если кратко, TOGAF это фреймворк для управления проектами. В России в полном объеме он так и не прижился. ArchMate это визуальное представление части этих процессов. Многие компании пытаются использовать это как стандарт, но с моей точки зрения практической пользы в этом мало.
Подписывайтесь на канал для получения актуальных инсайтов об архитектуре, AI и современных технологиях разработки!
Комментарии (14)

ruomserg
16.10.2025 18:40При всем уважении к искусству рисования диаграм - важность их часто преувеличена. Нет, продираться через портянку текста без единой иллюстрации - никакого удовольствия нет. Но практика показала что диаграммы почти всегда представляют собой не более чем визуальные приманки, на которые можно навешивать и заякоривать дополнительную информацию.
Если же рассматривать диаграмму как самостоятельный источник знания - то там или показывается что-то общеизвестное ("солнышко всходит и заходит", "устройство состоит из корпуса, крышки, и запчастей внутри"), или наоборот из-за высокого полёта опущены системы и связи которые на самом деле есть. Добро пожаловать нарисовать вменяемую диаграмму, я не знаю - почтовой системы, которая запускает своих воркеров на нодах кубера, алерты которого идут в эту же почтовую систему... И не просто нарисовать (нарисовать-то можно) - а чтобы по этой диаграмме можно было делать нетривиальные наблюдения - например что при отказе кубера, алерты тоже скорее всего не доставятся.
Делу бы помогло, если можно бы было описать систему на каком-то языке, и потом генерировать нужные представления и диаграммы, выделяя слои и накладывая фильтры. Тогда было бы понятное и самосогласованное описание системы (и хорошо бы - версионированное), а из него уже генерировались какие хочешь диаграммы типа: "выбери вот эту и ту ключевую систему - и все их связи первого уровня".
А пока такого описания нет - диаграмма остается чисто иллюстрацией, которая зависит от того а) на чем хочет сделать акцент источник информации и б) что ожидает увидеть приемник. И каждый ее рисует в силу своих способностей и усидчивости... И уж C4 оно или нет - в конечном счете не имеет значения... И версионировать именно диаграмму (и не описание системы в целом) - я тоже большой выгоды не вижу...

olku
16.10.2025 18:40Вы недооцениваете силу нотаций. Такое есть с boxes and arrows. Но если стейкхолдеры читают тот же C4, визуализация ускоряет процесс обмена знаниями многократно. Ваш архитектор.

ruomserg
16.10.2025 18:40Еще раз - в 99% случаев, стейкхолдер уже и так прекрасно знает всё что вы нарисовали на диаграмме. А если не знает - то диаграмма ему мало поможет (без чтения оставшейся портянки). При этом я ни разу не отрицаю полезности диаграмм! Схематический рисунок - нечто очень древнее, и очень сильно отзывающееся в мозгу homo - что позволяет лучше раскладывать прилагающуюся к рисунку информацию. "Лучше один раз увидеть - чем сто раз услышать" (С) народная мудрость. Самое смешное - что даже ошибки на диаграмме типа перепутанных названий и ведущих "в никуда" стрелок - никого особо не смущают. Если рисунок релевантный - то он все-равно улучшает восприятие сопровождающего текста/рассказа. Но ровно по этой причине - будете ли вы на схеме соблюдать строгий канон, или просто накидаете кружков/квадратиков/стрелочек - практически ни на что не влияет. Конечно, если стейкхолдер привык к C4 - не надо его мучать ничем другим, так и рисуйте. Но вот делать вид что "мы сейчас научим всех C4, введем его как корпоративный стандарт - и ух, у нас все сразу улучшится" - я бы сильно поостерегся...

askid Автор
16.10.2025 18:40Все верно и потому я и предлагаю YAML из которого можно собрать любую визуализацию в том числе C4. Полагаю что при правильных танцах с бубнами можно сконвертировать и в нотации Archmate. В чем у меня лично претензии к C4 и Blocks&Lines, один слишком ограничен (не возможности указать интерфейсы), другой слишком свободен (рисуй что хочешь, понимай как хочешь). В yaml же один раз описал структуру, разложил все по полочкам, и конвертируй куда хочешь. Плюс возможно каждый модуль описать в yaml и потом, так как это машиночитаемая нотация, можешь визуализировать все связи, все интерфейсы, потоки, ограничения, протоколы и т.п. Тут прям поле для деятельности архитектора. С удовольствием бы занялся типизацией yaml и созданием редактора (конвертора), но как обычно нет времени и достойного финансирования, да и Structurizr DSL уже есть. Знаю что в больших компаниях (говорю про Россию) уже есть системы машиночитаемых нотаций, ну или зачатки этих систем. Так что будущее мне видится именно так: источник знаний один который конвертируется в любые нотации.

olku
16.10.2025 18:40Автор или ИИ смешал нотацию с языком разметки. Structurizr и PlantUML машиночитаемы, прекрасно версионируются и автоматизируются. Несложным преобразованием можно тащить манифесты прямо с оркестратора. Кстати, у Саймона есть ещё диаграмма развертывания.

askid Автор
16.10.2025 18:40Когда много мыслей, а хочется донести мысль не раздувая статью до уровня документации приходится чем-то жертвовать. Если быть совсем честным, любой код можно положить в гит и сделать diff, тот же C4 от drawio по факту xml как файл word или excel и да тут получается версионировать, но вот без знания структуры разметки будет сложно понять что изменилось. С UML или Structurizr попроще, но будем честны UML это про бизнес процессы, все остальное опции, рисовать там диаграммы c4 тот еще вариант. Structurizr поинтересней и чуть понятней, можно еще mermaid добавить в эту же историю. Что касается диаграммы развертывания, отличная история, но до тех пор пока не появляется георезервирование, изолированые vlan и т.п. Тут уже нотации от google поинтересней.

Bandsea
16.10.2025 18:40Гибрид нужен. C4 + YAML. Понятное дело...

askid Автор
16.10.2025 18:40Ну я пытался донести эту мысль что собираем все в yaml а потом конвертируем в то что требуется в том числе в C4. C4 к сожалению имеет очень ограниченную нотацию, так не возможно обозначить интерфейсы, а их к слову может быть очень много у одного микросервиса - особенно если он является адаптером.

beswalod
16.10.2025 18:40AI-text detected

askid Автор
16.10.2025 18:40Коррекцию текстов я всегда делаю через AI, чтобы избежать ошибок. При наличии такого корректора (в реальной жизни это был бы редактор) глупо, потому как в процессе написания очень часто возникает тавтология и другие стилистические ошибки.
ASenchenko
Подождите.
На plant uml же вроде можно с4 писать?
askid Автор
Можно, но это какое-то извращение. Yaml точно проще.
ASenchenko
Да, конечно проще
Просто пока статью читал, не нашёл упоминания, паззл разошёлся.
Всё, ок