Модель C4 полезна тогда, когда команде нужно не просто нарисовать архитектуру, а объяснить одну и ту же систему разным людям без перегрузки деталями. Эта глава как раз про то, как держать несколько уровней приближения одновременно и не терять целостность рассказа по дороге от внешнего контекста к внутреннему устройству.
В ежедневной документации она хороша тем, что подсказывает нужный уровень диаграммы под задачу: системный контекст для общей картины, контейнеры для рабочей архитектуры команды, компоненты для выборочного углубления и диаграмму развёртывания для связи с инфраструктурой. Не менее важны и правила нотации с типовыми ошибками, потому что именно там обычно ломается ясность.
В архитектурных обсуждениях модель C4 удобна как спокойный и повторяемый способ вести собеседника по уровням абстракции. С её помощью легко показать границы системы, ключевые контейнеры и места, где нужен более детальный разбор, не перегружая разговор раньше времени.
Практическая польза главы
Уровни абстракции
Дает понятный способ раскладывать архитектуру от контекста до компонентов без перегрузки деталями.
Целевая аудитория
Помогает выбирать уровень диаграммы под конкретного читателя: для бизнеса, архитектора, разработчика или эксплуатационной команды.
Консистентность модели
Учит поддерживать связность между уровнями, чтобы описание системы не противоречило само себе.
Структура на интервью
На интервью позволяет чётко двигаться от общего контекста к нужному углублению в детали.
Источник
Официальный сайт модели C4
Ключевые принципы, уровни диаграмм, правила нотации и примеры от Simon Brown.
Модель C4 — лёгкий и прикладной подход, который раскладывает архитектуру по уровням абстракции. Главная идея проста: показывать систему на нужном уровне детализации для конкретной аудитории, а не пытаться объяснить всё одной перегруженной схемой.
Что такое модель C4
полезна там, где одну и ту же систему нужно объяснить разным без перегруза деталями. Она раскладывает описание по уровням : от к , затем к и, если действительно нужно, к коду.
Такой подход помогает не смешивать разговор о границах системы, внутреннем устройстве и . Поэтому модель C4 удобно использовать рядом с языком UML, нотацией BPMN и языком ArchiMate: каждая нотация отвечает на свой класс вопросов, а модель C4 удерживает структуру архитектурного рассказа.
Четыре уровня модели C4
Системный контекст (System Context)
Система в окружении пользователей и внешних зависимостей.
Аудитория: Техническая и нетехническая аудитория.
Рекомендация к использованию: Да, почти всегда.
Контейнеры (Container)
Приложения и хранилища внутри системы: веб-приложение, API, база данных, очередь.
Аудитория: Архитекторы, разработчики, эксплуатационные команды.
Рекомендация к использованию: Да, базовый уровень для команд.
Компоненты (Component)
Крупные внутренние части выбранного контейнера.
Аудитория: Архитекторы и разработчики.
Рекомендация к использованию: По необходимости, если это действительно проясняет устройство.
Код (Code)
Кодовые элементы конкретного компонента (классы/интерфейсы/таблицы).
Аудитория: Разработчики.
Рекомендация к использованию: Скорее нет; лучше получать автоматически из исходников по запросу.
Примеры диаграмм модели C4
Одна и та же система — четыре уровня детализации: от внешнего контекста до развёртывания. Переключайте карточки и смотрите, на каком уровне разговор о системе остаётся понятным выбранной аудитории, а где начинается лишний шум.
Системный контекст
Пользователь, внешние системы и одна целевая платформа на уровне L1.
Детали
Раздел Diagrams
Рекомендации по основным и дополнительным диаграммам.
Дополнительные диаграммы
Ландшафт системы (System Landscape)
Карта систем на уровне организации/домена.
Динамика (Dynamic)
Сценарий взаимодействий во времени для конкретного сценария использования.
Развёртывание (Deployment)
Размещение контейнеров и систем по средам эксплуатации и подготовки.
Нотация
Правила нотации
Практические правила описания элементов и связей.
Правила нотации
Именование
У каждого элемента есть имя и короткое описание.
Технологии
Для контейнеров и компонентов явно указывается технология.
Связи
Связи должны быть направленными, подписанными и понятными по смыслу.
Протокол
Для межконтейнерных связей явно указывайте протокол или технологию.
Легенда
Добавляйте легенду, чтобы нотация оставалась самодокументируемой.
Независимость от инструмента
Модель C4 не привязана к конкретному инструменту или стилю визуализации.
Практический процесс работы с моделью C4
Шаги работы с моделью C4
5 этапов от границ системы до среды выполненияКонтекст
Начинайте с системного контекста, чтобы зафиксировать границы системы и внешние зависимости.
Контейнеры
Добавляйте диаграмму контейнеров как основной рабочий слой архитектуры.
Компоненты
Диаграмму компонентов рисуйте только для важных или сложных контейнеров.
Код
Кодовый уровень оставляйте для действительно сложных мест и, по возможности, получайте его из исходников.
Сценарии и среда
Для сценариев выполнения и инфраструктуры используйте динамическую диаграмму и диаграмму развёртывания.
Контекст
Начинайте с системного контекста, чтобы зафиксировать границы системы и внешние зависимости.
Контейнеры
Добавляйте диаграмму контейнеров как основной рабочий слой архитектуры.
Компоненты
Диаграмму компонентов рисуйте только для важных или сложных контейнеров.
Код
Кодовый уровень оставляйте для действительно сложных мест и, по возможности, получайте его из исходников.
Сценарии и среда
Для сценариев выполнения и инфраструктуры используйте динамическую диаграмму и диаграмму развёртывания.
Частые ошибки
Слишком глубокий старт
Начать сразу с компонентов или кода, не зафиксировав контекст и контейнеры. Аудитория теряет границы системы и спорит о деталях раньше, чем согласован масштаб разговора.
Размытые связи
Подпись вроде «uses» ничего не говорит о характере взаимодействия. Читатель не понимает, что и по какому протоколу ходит между элементами, и диаграмма перестаёт отвечать на вопросы.
Один плакат на всё
Когда все уровни собраны на одной схеме, читаемость падает быстрее детализации — такую диаграмму никто не открывает второй раз.
Ручная синхронизация L4
Диаграммы уровня L4, нарисованные вручную, устаревают на первом же рефакторинге. Дешевле получать их из исходников по запросу, чем держать в актуальном состоянии руками.
Связанные главы
- Введение в архитектуру ПО - Даёт базовые архитектурные принципы и помогает понять, для какой аудитории и на каком уровне стоит рисовать диаграмму.
- UML - Показывает альтернативную нотацию и помогает сравнить, где модель C4 даёт более прямой и прикладной способ объяснить систему.
- Стратегии декомпозиции - Границы сервисов и модулей из декомпозиции напрямую переходят в уровень контейнеров и уровень компонентов модели C4.
- BPMN - Нотация BPMN описывает ход процесса, а модель C4 — структуру системы; вместе они дают целостную архитектурную картину.
- ArchiMate - Дополняет модель C4 взглядом корпоративной архитектуры и связывает бизнес, приложения и технологический слой.
