Инструмент: C4 QuietGridLabs. Можно открыть демо без авторизации: проект будет храниться локально в браузере.

Иногда архитектура «есть» — но пользоваться ею невозможно.

На доске лежит схема сервисов. В Confluence живёт описание. Где-то рядом — sequence-диаграмма, которую никто не открывал с прошлого года. ER-модель хранится в другом инструменте. А когда на ревью возникает простой вопрос «какой endpoint обслуживает этот путь?», команда начинает собирать ответ из памяти, догадок, выдумок, ссылок и исходников.

Я больше 15 лет работаю в ИТ, из них около десяти занимаюсь проектированием и системным дизайном. За это время перепробовал немало: Sparx, ArchiMate, Structurizr, Confluence, whiteboard-сервисы. Я не считаю их плохими — у каждого есть свой сценарий и своя аудитория. Но лично у меня постоянно оставалось ощущение разрыва: диаграмма была отдельно, документация отдельно, а живой контекст системы — в голове у людей.

В какой-то момент моими рабочими спасателями стали whiteboard и VS Code, а позже Cursor. В них можно быстро собрать мысль, оставить немного полезного творческого беспорядка и двигаться дальше. Но они не решали главную проблему: хотелось, чтобы система, её связи, сценарии и документация были одной навигационной моделью.

Так появился C4 QuietGridLabs. Это мой экспериментальный редактор, где C4-модель — это каркас проекта. К элементам можно прикреплять документацию, sequence-диаграммы, ER-диаграммы и описание API, а по связям — переходить от общего ландшафта к конкретным участникам взаимодействия.

В статье покажу это на небольшом примере интернет-банка путь, которым я сам хотел бы пользоваться при разборе незнакомой системы или же при проектировании новых систем.

Что можно сделать уже сейчас

  • Моделировать систему на четырёх уровнях C4: System Context, Container, Component и Code.

  • Создавать связи между элементами и подсвечивать их соседей.

  • Проваливаться в дочерние уровни двойным кликом — почти как в директории.

  • Вести Markdown-документацию прямо у элементов модели.

  • Создавать sequence-диаграммы на PlantUML и вставлять их в документацию.

  • Работать с ER-диаграммой для компонента базы данных.

  • Описывать API endpoint: request, response и headers.

  • Экспортировать весь проект в JSON или отдельный элемент в ZIP с документацией и PlantUML.

  • Работать над облачными проектами совместно и передавать контекст в Cursor или Claude Code через MCP-сервер.

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

Начинаем с границы системы

Первый уровень C4 — системный контекст. Здесь важно не нарисовать всё на свете, а честно ответить на два вопроса: за что отвечает наша система и с кем она взаимодействует.

В примере я создаю Internet Banking System, внешние сервисы и пользовательские каналы.

Пример систем
Пример систем

У каждого элемента можно задать краткое описание, технологию и признак внешней системы.

Окно редактирования системы
Окно редактирования системы

Это кажется мелочью, пока не приходишь на обсуждение интеграции и не понимаешь, что половина блоков на схеме вообще не находится в зоне ответственности команды. Признак внешнего элемента сразу возвращает разговор к границам.

У узла может быть собственная документация. Иконка на карточке показывает, что она уже существует.

При клике документация доступна в сайдбаре
При клике документация доступна в сайдбаре

Внутри — Markdown с предпросмотром. Я специально не пытался изобрести новый формат: Markdown знают многие, он удобно хранится и переносится. Для таблиц есть Insert Table, чтобы не тратить время на ручное выравнивание разметки.

Так выглядит редактор документации
Так выглядит редактор документации
Созданная таблица в визуальном редакторе
Созданная таблица в визуальном редакторе

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

Спускаемся к контейнерам

Двойной клик по системе открывает уровень контейнеров: SPA, API-приложение, PostgreSQL и мобильное приложение.

Пример контейнеров
Пример контейнеров

Небольшое, но важное уточнение: контейнер в C4 — не обязательно Docker-контейнер. Это развёртываемая или исполняемая часть системы: приложение, база данных, фронтенд или отдельный сервис.

У API Application видны иконки документации и sequence-диаграмм. Для меня это одна из ключевых идей сервиса: диаграмма сценария не должна быть «где-то в папке». Она принадлежит элементу, контекст которого объясняет.

При клике на sequence список диаграмм доступен в сайдбаре
При клике на sequence список диаграмм доступен в сайдбаре

Sequence-диаграммы строятся на PlantUML. Сначала через Add from C4 model добавляем участников текущего слоя, затем описываем сообщения между ними.

Визуальный и plantUml редактор Sequence Diagram
Визуальный и plantUml редактор Sequence Diagram

Ограничение на участников того же слоя намеренное. Оно помогает не смешивать абстракции на одной диаграмме. Для длинных сценариев можно сворачивать group и alt.

Свернутый кусок sequence
Свернутый кусок sequence

Если диаграмму привязали не к тому элементу, это можно исправить через Attach.

Список доступных систем для привязывания
Список доступных систем для привязывания

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

Визуальный редактор документации
Визуальный редактор документации
Список доступных sequence diagram
Список доступных sequence diagram

Когда база данных — не просто цилиндр

Если открыть контейнер PostgreSQL, попадаем в ER-редактор.

ER-диаграмма базы данных
ER-диаграмма базы данных

Обычно на схеме базы данных быстро заканчивается место для смысла: таблица нарисована, а зачем она существует, кто ей владеет и какие у неё ограничения — неизвестно. Здесь к таблицам тоже можно прикреплять документацию. Например, зафиксировать владельца, срок хранения, правила миграций или семантику спорного поля.

Для этого нажмите правой кнопкой по элементу и выберите Add → Documentation.

Контекстное меню элемента
Контекстное меню элемента

Идём по связи, а не по памяти

Самая интересная для меня часть начинается со связей.

Стрелка между SPA и API сообщает, что они взаимодействуют. Но во время ревью почти всегда нужен следующий вопрос: «а какие именно части API участвуют в этом вызове?» Раньше я обычно открывал несколько схем, искал endpoint, затем сервис и пытался не потерять исходный контекст.

В редакторе связи выбираем Edit Connection.

Окно редактирования связи элементов
Окно редактирования связи элементов

В Related Components связываем интеграцию с компонентами внутри контейнера.

Список доступных элементов для связей
Список доступных элементов для связей

После этого View related components → In API Application открывает компонентный уровень и подсвечивает участников выбранной связи.

Контекстное меню связи
Контекстное меню связи

Например, можно быстро пройти путь SPA → API → Auth Service и увидеть, где именно он раскладывается внутри приложения. Подсветка сбрасывается кнопкой Clear connection highlight.

Компоненты и их связи, участвующие в вышестоящей связи
Компоненты и их связи, участвующие в вышестоящей связи

На уровне Component описываются контроллеры, сервисы, адаптеры, API endpoint и другие части контейнера. API Endpoint — отдельный тип компонента: у него нет уровня кода, зато есть поля для request, response и HTTP-заголовков.

Окно редактирование API Endpoint
Окно редактирование API Endpoint

Если нужно дойти до код

Последний уровень C4 — Code. Например, двойной клик по Auth Service открывает объекты внутри компонента: классы, интерфейсы, функции и другие элементы реализации.

Элементы уровня Code
Элементы уровня Code

У объекта можно указать тип, язык и добавить фрагмент кода либо псевдокод.

Окно редактирования элемента Code
Окно редактирования элемента Code

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

Совместная работа без «у кого открыта последняя схема»

Без авторизации можно работать локально. Для облачных проектов и совместного редактирования нужен аккаунт.

  • Получите временные учётные данные через почту, указанную в сервисе, и после первого входа смените пароль.

  • Авторизуйтесь и создайте проект кнопкой с папкой в toolbar.

  • На canvas откройте настройку доступа кнопкой Share.

  • Выберите группу и добавьте её к проекту.

  • После этого проект становится доступен участникам группы. В нижней панели показаны активные пользователи; по клику можно перейти к области canvas, где сейчас работает конкретный человек.

    Модель также можно забрать с собой:

    • экспорт всего проекта создаёт JSON с иерархией и связями;

    • экспорт отдельного элемента создаёт ZIP с дочерними элементами, связями, документацией и PlantUML.

    Это может быть резервной копией, входными данными для другой системы или контекстом для LLM-инструмента. Но секреты и чувствительные данные в такой контекст, конечно, передавать не стоит.

Мне нужна честная обратная связь

C4 QuietGridLabs — не попытка заменить все архитектурные практики и не обещание автоматически поддерживать документацию актуальной. Это инструмент, который я делаю для одной конкретной цели: уменьшить расстояние между схемой, объяснением и реальным разговором команды о системе.

Попробовать сервис можно на c4.quietgridlabs.com.

Буду особенно благодарен за предметную обратную связь.

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

Всем спасибо!

Комментарии (8)


  1. Void-Cowboy
    14.08.2026 12:05

    интересно

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


    1. igrglvk Автор
      14.08.2026 12:05

      да, как только сервис будет наполнен и отлажен, сделаю публичным на github. Но пока есть идеи сделать плагин для VS Code или уйти в standalone...но это скорее идеи, чем что-то масштабируемое на долгий срок


  1. antirek
    14.08.2026 12:05

    С4 - вообще странная штука - с одной стороны архитектура на уровне систем, с другой схема таблиц в БД. хотя по идее это уровни разных людей. и если ты строишь архитектуру контура, то у тебя на сервисах API, которые тебе гарантируют контракты взаимодействия. а если строишь ПО, то пожалуйста, рисуй архитектуру программы, схемы БД и т.д. редактор, кстати, да прикольный.


    1. SiGGthror
      14.08.2026 12:05

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


      1. antirek
        14.08.2026 12:05

        вот примерно шапка моего "пульта" связи кода с железом (ниже не буду показывать, много конкретики) т.е. от репозитория мы получаем артефакты (пакеты, images) и деплоим их на контуры. при этом меня не интересует что конкретные разрабы в конкретных репозиториях пишут, рисуют и реализуют (схемы БД, openapi specs). главное,чтобы потом в деплое были указаны все связи (какие БД, какие внешние сервисы). все сущности, все связи указаны в json. к этому json и другим данным имеет доступ агент, с которым можно проговорить детали, агент в описаниях обязательно рисует схемы в mermaid - очень понятно, подробно.


        1. SiGGthror
          14.08.2026 12:05

          И как это относится к предмету разговора? Мы про C4 и уровни архитектурного описания, а тут внезапно про инвентори деплоя. То, что у тебя есть JSON со связями и из него можно нарисовать Mermaid позволяет лишь получить определенный срез архитектуры, но это далеко не исчерпывающая информация. Если кому-то без разницы что там внутри сервисов происходит, не значит что всем должно быть без разницы.
          Если понадобится проектировать хранилище данных, которое должно обрабатывать миллионы пользователей, внезапно выяснится что текущие ограничения железа вынуждают шардировать данные и здесь, как ни странно, схема БД становится очень важна.


          1. antirek
            14.08.2026 12:05

            да, важна, схема БД. но та, что реально лежит в проекте, а не нарисованная в документации. потому как, оп, разрабы их меняют по мере необходимости, и если у них там своя команда, и они отдельно принимают решения по архитектуре своего проекта, то ты по факту начинаешь сверять что у вас отличается. у меня в деплое как раз содержится инфо о связях с БД, чтобы понимать сколько там чего используется из железа.

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


            1. igrglvk Автор
              14.08.2026 12:05

              На самом деле вы оба правы.

              C4 всё же больше про послойное описание архитектуры, чем непосредственно про инфраструктуру. Но если смотреть на жизненный цикл каждого элемента, неизбежно возникает вопрос: как поддерживать всю эту документацию в актуальном состоянии?

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

              С первой частью обычно всё относительно понятно. Со второй часто возникают проблемы:

              1. Нет централизованного процесса поддержки документации. Как ни унифицируй подходы, со временем команды всё равно начинают использовать инструменты и форматы, которые удобнее именно им.

              2. Разработчикам и аналитикам естественно держать документацию рядом с кодом, в репозитории, и обновлять её через привычный процесс review и merge request’ов.

              3. Не определён источник истины. Что считать реальностью: документацию, где были зафиксированы договорённости, или фактическую реализацию сервиса?

              Для себя я пришёл к тому, что источником истины должны быть именно зафиксированные договорённости. Желательно, чтобы документация была трассируема до требований, реализации и тестов — и обратно. Тогда второй и третий пункты во многом решаются сами собой: документация становится частью инженерного процесса, а не побочным артефактом.

              Кроме того, при современных AI-подходах документация может быть не только описанием уже реализованной системы. На её основе можно генерировать контракты, интерфейсы, каркасы сервисов и часть бизнес-логики.

              Кстати, в моем сервисе для авторизованных пользователей доступен MCP-сервер: например, в Cursor можно получить весь необходимый контекст и при необходимости редактировать его прямо из рабочей среды.