MLOps Path

2.2.2 · блок 2

C4-модель: Context и Containers

C4-модель: Context и Containers

Зачем это нужно

Архитектурные диаграммы часто превращаются в «кашу из стрелок»: 40 блоков, никто не понимает, за что отвечает ML-сервис. C4 model (Simon Brown) — иерархия из четырёх уровней детализации: Context → Containers → Components → Code. На каждом уровне аудитория своя: PM смотрит Context, MLE — Containers, разработчик — Components.

Для курса достаточно первых двух уровней. Это навык, который вы используете в Confluence, ADR и onboarding-документации.

Основные идеи

Level 1: System Context — «как система вписана в мир». Один центральный блок (ваша система), вокруг — пользователи и внешние системы. Без технологий, без протоколов — только *кто* с *кем* взаимодействует.

Level 2: Containers — «из чего состоит система». Container в C4 — не Docker-контейнер, а *развёртываемая единица*: веб-приложение, API, база данных, ML-сервис, очередь. На диаграмме указаны технологии и протоколы связи.

Уровни 3–4 (Components, Code) — внутренняя структура одного container; на старте курса не обязательны.

Правила хорошей C4-диаграммы:

Как это выглядит на практике

Пример: система «Product Recommendations»

Context (Level 1)


[Покупатель] --просматривает рекомендации--> [Recommendation System]
[Аналитик] --смотрит метрики--> [Recommendation System]
[Recommendation System] --читает каталог--> [Catalog Service]
[Recommendation System] --отправляет события--> [Analytics Platform]

Центральный блок — наша система целиком. Внешние системы — чёрные ящики.

Containers (Level 2)

Внутри Recommendation System:

| Container | Технология | Назначение |

|-----------|------------|------------|

| Web Storefront | React | UI магазина |

| API Gateway | Nginx | Маршрутизация, rate limit |

| Recommendation API | Python/FastAPI | REST для рекомендаций |

| ML Inference Service | Python, ONNX Runtime | Генерация рекомендаций |

| Feature Store | Redis | Онлайн-фичи пользователя |

| Model Registry | S3 + metadata DB | Версии моделей |

| Training Pipeline | Airflow | Переобучение раз в сутки |

Связи:

MLE при onboarding открывает Container-диаграмма и за 5 минут понимает, куда встроить новый endpoint. PM на Context видит, что Catalog Service — внешняя зависимость (риск для сроков).

Инструменты: draw.io, Structurizr, Mermaid в Markdown — главное следовать нотации C4.

Что сделать после занятия

Официальные материалы

Открыть интерактивную версию