C4 model на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем спрашивают на собесе SA

C4 — современный лёгкий подход к архитектурной документации. Альтернатива тяжёлому UML. На собесе SA: «отличие container и component», «когда C4».

4 уровня C4

C4 (Simon Brown) — нотация на 4 уровнях абстракции. От общего к частному.

C1: System Context — система в окружении.
C2: Container — внутри системы (apps, services, БД).
C3: Component — внутри container (модули).
C4: Code — внутри component (классы) — редко используется.

Идея. Можно «zoom in» от общего к частному. Каждый уровень — для своей аудитории.

Level 1: System Context

«Что система делает в большом мире».

[User]                    [Admin]
  |                         |
  ↓                         ↓
  ───→ [Banking System] ←───
              |
              | (uses)
              ↓
        [Email Provider]

Что показать:

  • Сама система (один прямоугольник).
  • Пользователи (people).
  • Внешние системы (которые наша вызывает или которые её вызывают).
  • Ключевые потоки данных.

Аудитория: топ-менеджмент, новые сотрудники, бизнес-стейкхолдеры.

Level 2: Container

«Что внутри системы».

Container — runtime-исполнимое:

  • Веб-приложение (Single Page App).
  • Backend-сервер (Spring Boot, Django).
  • Mobile app.
  • БД (Postgres, Redis).
  • Очередь (Kafka).
  • Внешний скрипт / cron.
[User]
  ↓ HTTPS
[SPA: React] ── REST/JSON ──→ [API: Spring Boot] ── JDBC ──→ [Postgres]
                                       |
                                       └── [Redis cache]
                                       └── [Kafka events]

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

Level 3: Component

«Внутри container».

Component — логический модуль внутри runtime:

[API: Spring Boot]
  ├── [AuthController]
  ├── [UserController]
  ├── [OrderController]
  ├── [PaymentService]   ── HTTPS ──→ [Bank API]
  ├── [UserRepository]    ── JDBC ──→ [Postgres]
  └── [EmailNotifier]     ── SMTP ──→ [Email Provider]

Аудитория: разработчики этого container.

Реалии. Чаще ограничиваются level 2. Component diagrams устаревают быстро.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Level 4: Code

UML class diagrams внутри component. Обычно автогенерируются IDE — редко рисуются вручную.

В большинстве C4 практик это уровень skip'аются.

Дополнительные диаграммы

Помимо 4 levels, C4 предлагает:

Deployment diagram. Где runs контейнеры — облако, регионы, instances.

[AWS eu-west-1]
  ├── [ECS]
  │     └── [API Container]
  ├── [RDS Postgres]
  └── [ElastiCache Redis]

Dynamic diagram. Поток между containers / components для конкретного сценария.

System Landscape. Несколько систем + общие зависимости.

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

Слишком много containers. > 20 в одной диаграмме — нечитаемо. Декомпозируй.

Component на C2 уровне. Container — runtime executable, не код.

Все 4 levels для каждой системы. Часто level 1 и 2 достаточно. Level 3 — выборочно, level 4 — почти никогда.

Игнорировать deployment. Cloud / k8s / multi-region важно показать отдельно.

Не указывать технологии. «Web App» — недостаточно. «Web App (React, Vite, hosted on Vercel)» — конкретно.

Использовать UML вместо C4 нотации. C4 проще. Mixing создаёт confusion.

Связанные темы

FAQ

Где рисовать C4?

structurizr.com (родное), Mermaid (поддерживает C4), draw.io, PlantUML.

Можно ли использовать C4 в строгом enterprise?

Да, но обычно дополняется UML / архитектурной документацией. C4 — хорош для коммуникации, не замена formal docs.

Это официальная информация?

Нет. Статья основана на c4model.com (Simon Brown).


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.