System Design Space

    Глава 212

    Обновлено: 15 февраля 2026 г. в 09:05

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

    Прогресс части0/5

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

    Источник

    Официальный сайт 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-диаграммы вручную без автообновления из исходников.

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