C4 model на собеседовании системного аналитика
Карьерник — 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 устаревают быстро.
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.
Связанные темы
- UML Use Case на собесе SA
- UML Class на собесе SA
- Монолит vs микросервисы на собесе SA
- REST API на собесе SA
- Подготовка к собесу системного аналитика
FAQ
Где рисовать C4?
structurizr.com (родное), Mermaid (поддерживает C4), draw.io, PlantUML.
Можно ли использовать C4 в строгом enterprise?
Да, но обычно дополняется UML / архитектурной документацией. C4 — хорош для коммуникации, не замена formal docs.
Это официальная информация?
Нет. Статья основана на c4model.com (Simon Brown).
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.