Архитектура ПО по методу C4: от уровней декомпозиции до генерации схем через ИИ
На Хабре вышло обновлённое руководство по нотации C4 — расширенная версия статьи, которая с 2023 года набрала больше 280 тысяч просмотров.

Четыре уровня декомпозиции, инструменты, разбор косяков новичков и блок про генерацию C4 через ИИ — всё в одном материале. Если у вас в репозитории до сих пор лежит PlantUML-портянка на восемьсот строк, пора это закапывать.
Четыре уровня вместо одного бардака
C4 — не фреймворк, не библиотека и не SaaS. Это соглашение о том, как рисовать архитектуру так, чтобы её понимали остальные. Уровней четыре: Context (кто пользователи и какие внешние системы), Container (приложения и хранилища внутри), Component (что внутри контейнера), Code (как устроен отдельный компонент). Каждый следующий слой раскрывает предыдущий — как systemd раскрывает ядро, только без kernel panic при неудачном апдейте.
Рисовать все четыре не обязательно. Берёте те, что закрывают вопросы команды. Объяснить продакт-менеджеру, куда уходит запрос, — хватит Context. Показать синьору, где граница между сервисами, — добавляйте Container. Остальное — по необходимости, а не для красоты слайда.
Инструменты и ИИ: где и как рисовать
Draw.io — визуальный редактор. В нём убедитесь, что в настройках включены фигуры C4, иначе получите дефолтную UML-палитру и неделю гаданий, какой прямоугольник означает базу данных. Structurizr — диаграммы через код: DSL вместо мышки, версионирование в git, ревью в пул-реквесте. Для бэкендера второй вариант роднее.
Отдельный раздел — про генерацию C4 через нейросети. Работает как везде: промпт полезен, если вы сами понимаете, чего хотите. Скормили LLM кривое ТЗ — получите три уровня абстракции, которые противоречат друг другу, и квадратик, неотличимый от трубы. Перечитайте результат и сверьте с реальной архитектурой: ИИ галлюцинирует связи так же легко, как джун придумывает имена переменных.
Что делать прямо сейчас
1. Откройте последнюю архитектурную схему. Если на ней больше одного уровня абстракции на одной картинке — перерисуйте по C4.
2. Выберите инструмент: Draw.io для быстрых созвонов, Structurizr для репозитория.
3. Добавьте диаграммы в README. Без них через полгода никто не вспомнит, зачем в системе три очереди и один cron, который дёргает второй cron.
4. Не пытайтесь нарисовать сразу все четыре уровня. Начните с Context — это полчаса работы и сразу понятно, кто с кем говорит.
Документация — не процесс ради процесса. Это костыль, который экономит два часа дебага, когда через год новый разраб спросит, зачем микросервис ходит в базу через Kafka, которая сама ходит в базу напрямую. Сложные системы ломаются одинаково: недопонимание архитектуры в коде ведёт к тем же последствиям, что и врачебные ошибки в клинике — всё начинается с того, что никто не понял, как устроена система.
Бэкапы, документация, теги на схемах. Без этого вы не инженер, а временный администратор чужого костыля.