System Design Space
Граф знанийНастройки

Обновлено: 24 марта 2026 г. в 12:33

C4 Model: контекст, контейнеры, компоненты, код

medium

Практическое руководство по C4 Model на базе официального сайта: 4 уровня диаграмм, notation и workflow моделирования.

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

В ежедневной документации он хорош тем, что подсказывает диаграмму под аудиторию и под задачу: context для общей картины, container для рабочей архитектуры команды, component для выборочной глубины, deployment для связи с инфраструктурой. Не менее важен и разбор notation guidelines с типовыми ошибками, потому что именно там обычно ломается ясность.

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

Практическая польза главы

Уровни абстракции

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

Целевая аудитория

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

Консистентность модели

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

Interview structure

На интервью позволяет четко двигаться от high-level контекста к точечному deep dive.

Источник

Официальный сайт C4 Model

Ключевые принципы, уровни диаграмм, notation и примеры от Simon Brown.

Открыть c4model.com
ContextContainerComponentCode

C4 Model — developer-friendly подход, где архитектура раскладывается по уровням абстракции. Главная идея: показывать систему на нужном уровне приближения для конкретной аудитории, а не объяснять всё одной перегруженной схемой.

4 уровня C4

L1

System Context

Одна система в окружении людей и внешних систем.

Аудитория: Техническая и нетехническая аудитория.

Рекомендация к использованию: Да, почти всегда.

L2

Container

Приложения и хранилища внутри системы (web app, API, DB, queue, etc).

Аудитория: Архитекторы, разработчики, ops/support.

Рекомендация к использованию: Да, базовый уровень для команд.

L3

Component

Компоненты внутри выбранного контейнера.

Аудитория: Архитекторы и разработчики.

Рекомендация к использованию: Опционально, если реально добавляет ценность.

L4

Code

Кодовые элементы конкретного компонента (классы/интерфейсы/таблицы).

Аудитория: Разработчики.

Рекомендация к использованию: Скорее нет; лучше генерировать из tooling по запросу.

Примеры C4 диаграмм

Примеры в формате из UML-главы: выбирайте тип диаграммы и смотрите соответствующую визуализацию.

Context Example

Пользователь, внешние системы и одна целевая платформа на L1.

UserWeb / MobileSubscription PlatformPlans + BillingNotifications + MetricsPayment PSPcharge / refundCRMsupport eventsgetSubscriptionStatepayment APIevents

Детали

Diagrams

Рекомендации по core и supporting диаграммам.

Открыть раздел

Supporting диаграммы

System Landscape

Карта систем на уровне организации/домена.

Dynamic

Сценарий взаимодействий во времени для конкретного use case.

Deployment

Размещение контейнеров и систем по средам (prod/stage/dev).

Notation

Notation Guidelines

Практические правила описания элементов и связей.

Открыть раздел

Notation checklist

Именование

У каждого элемента есть имя и короткое описание.

Технологии

Для контейнеров и компонентов явно указывается технология.

Связи

Связи направленные, с подписью и понятным intent.

Протокол

Для межконтейнерных связей явно указывайте протокол/технологию.

Legend

Добавляйте legend/key, чтобы нотация была самодокументируемой.

Tool-agnostic

C4 не привязан к конкретному инструменту и стилю визуализации.

Практический workflow

Шаги C4 workflow

5 этапов от границ системы до runtime-представления
Foundation
Decomposition
Runtime
01

Контекст

Начинайте с System Context, чтобы зафиксировать границы и внешние зависимости.

02

Контейнеры

Добавляйте Container диаграмму как основной рабочий слой архитектуры.

03

Компоненты

Компоненты рисуйте только для важных/сложных контейнеров.

04

Код

Code-уровень оставляйте для сложных мест и генерируйте из кода.

05

Runtime + Infra

Для сценариев и среды развертывания используйте Dynamic и Deployment.

Нажмите «Запуск», чтобы пройти workflow C4 пошагово.

Частые ошибки

Слишком глубокий старт

Сразу начинать с component/code без context/container.

Размытые связи

Подписывать связи общими словами вроде `uses` без конкретики.

Один плакат на всё

Пытаться показать всё на одной диаграмме и терять читаемость.

Ручная синхронизация L4

Хранить code-диаграммы вручную без автообновления из исходников.

Связанные главы

  • Введение в архитектуру ПО - Дает базовые принципы, которые определяют, на каком уровне C4 и для какой аудитории строить диаграмму.
  • UML - Показывает альтернативную нотацию и помогает сравнить, где C4 проще и практичнее для коммуникации.
  • Стратегии декомпозиции - Границы сервисов и модулей из декомпозиции напрямую переходят в Container и Component уровни C4.
  • BPMN - BPMN описывает ход процесса, а C4 — структуру системы; вместе они дают цельную архитектурную картину.
  • ArchiMate - Дополняет C4 enterprise-перспективой и связывает бизнес, приложения и технологический слой.

Чтобы отмечать прохождение, включи трекинг в Настройки