Модель C4 полезна тогда, когда команде нужно не просто нарисовать архитектуру, а объяснить одну и ту же систему разным людям без перегрузки деталями. Эта глава как раз про то, как держать несколько уровней приближения одновременно и не терять целостность рассказа по дороге от внешнего контекста к внутреннему устройству.
В ежедневной документации она хороша тем, что подсказывает нужный уровень диаграммы под задачу: системный контекст для общей картины, контейнеры для рабочей архитектуры команды, компоненты для выборочного углубления и диаграмму развёртывания для связи с инфраструктурой. Не менее важны и правила нотации с типовыми ошибками, потому что именно там обычно ломается ясность.
В архитектурных обсуждениях модель C4 удобна как спокойный и повторяемый способ вести собеседника по уровням абстракции. С её помощью легко показать границы системы, ключевые контейнеры и места, где нужен более детальный разбор, не перегружая разговор раньше времени.
Практическая польза главы
Уровни абстракции
Дает понятный способ раскладывать архитектуру от контекста до компонентов без перегрузки деталями.
Целевая аудитория
Помогает выбирать уровень диаграммы под конкретного читателя: для бизнеса, архитектора, разработчика или эксплуатационной команды.
Консистентность модели
Учит поддерживать связность между уровнями, чтобы описание системы не противоречило само себе.
Структура на интервью
На интервью позволяет чётко двигаться от общего контекста к нужному углублению в детали.
Источник
Официальный сайт модели C4
Ключевые принципы, уровни диаграмм, правила нотации и примеры от Simon Brown.
C4 Model — лёгкий и прикладной подход, который раскладывает архитектуру по уровням абстракции. Главная идея проста: показывать систему на нужном уровне детализации для конкретной аудитории, а не пытаться объяснить всё одной перегруженной схемой.
Что такое модель 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 взглядом корпоративной архитектуры и связывает бизнес, приложения и технологический слой.
