# PRD: продвинутый курс «Кликстрим на ClickHouse» (со звёздочкой) > Статус: черновик (прообраз PRD). Дата: 2026-06-01. > Назначение документа: зафиксировать для будущих сессий, что это за курс, зачем > он, что входит в скоуп работ, а что нет. Это договорная **рамка**, а не план > реализации и не стандарт уроков (см. раздел «Связанные документы»). > > Язык документа: уровни называем единообразно — **курс** (вся программа) состоит > из **уроков**. Соседние программы (например, Lakehouse) — отдельные **курсы**. --- ## 1. Контекст и назначение Репозиторий — рабочий сквозной стенд кликстрим-DWH: ``` data/*.jsonl → Kafka → ClickHouse (Kafka engine + MV → STG) → Airflow ETL (STG→ODS→DDS→DM) → Superset ↘ Prometheus / Grafana (мониторинг) ``` Стенд близок к продакшену и показывает несколько паттернов инженерии данных на связке Kafka + ClickHouse + Airflow + мониторинг. ClickHouse не входит в базовую программу обучения — это **продвинутый курс «со звёздочкой»** для менти, уже прошедших базу (SQL, моделирование, Python, Git, Docker, Airflow). Цель курса — превратить стенд в **самостоятельный учебный материал**, по которому продвинутый менти проходит ключевые паттерны сам, а ментор подключается на обычной еженедельной сессии (что получилось / что нет / вопросы / план на неделю). Долгий разбор кода вживую форматом не предусмотрен — поэтому материал обязан быть самодостаточным. ## 2. Цели (чему учим) К концу курса менти умеет: 1. **Заземлять поток из Kafka в ClickHouse** через Kafka engine и Materialized View (ClickHouse сам забирает сообщения из топика), понимая роль топиков, партиций, offset'ов и consumer-групп. 2. Строить **слоёный ETL** (STG → ODS → DDS → DM) и объяснять, **где уместен Materialized View** (стриминговое приземление данных), **а где батч** (так удобнее управлять и наблюдать за пересчётом). 3. Читать и объяснять **оркестрацию в Airflow**: DAG, зависимости задач, проверки качества данных, остановку пайплайна при нарушениях. 4. Понимать, **как устроен мониторинг** пайплайна (метрики, экспортёры, дашборды). 5. (Опционально) Подключать **BI-витрину** поверх ClickHouse (Superset). Сквозная цель — не «посмотреть, как работает», а **уметь пересказать паттерн своими словами и привязать его к обычной кликстрим-аналитике** (трекер событий → Kafka → ClickHouse → BI). ## 3. Аудитория и режим - **Аудитория:** продвинутые менти, прошедшие базовую программу. Пишем обобщённо, но затачиваем под реальный первый прогон, а не под гипотетических будущих менти. - **Режим:** самостоятельный, асинхронный. Менти клонирует репозиторий, поднимает стенд у себя (`make up`) и идёт по урокам из `docs/course/` рядом с кодом. - **Роль ментора:** еженедельная сессия-сверка, без построчного разбора кода. - **Железо:** стек тяжёлый (Kafka + ClickHouse + Airflow + Superset + Prometheus + Grafana одновременно). Считаем наличие подходящего железа данностью; стек не режем на части — это усложнило бы жизнь и менти, и автору материала. ## 4. Скоуп ### Входит - **Уроки 0–4 (обязательные):** вводный урок по Kafka, заземление Kafka→CH, слоёный ETL (где Materialized View, а где батч), Airflow, мониторинг. - **Аудит и точечная полировка эталонных путей** этих уроков до учебного качества (стандарт — в `LESSON_STANDARD.md`). - Учебная часть вокруг каждого эталонного пути по единому шаблону урока. Подробная карта уроков (файлы стенда, статус, режим, вердикты аудита) — в плане обучения `LEARNING_PLAN.md`. ### Опционально - **Урок 5: Superset (BI-витрина).** Делаем, если останется ресурс; обязательные уроки он не блокирует. ### Не входит - Переписывание всего стенда: полируем только эталонные пути обязательных уроков, остальной код стенда остаётся под капотом. - Lakehouse (Spark / Iceberg / Trino) — отдельный стенд, отдельный курс. - Подготовка к трудоустройству: резюме, легенда, мок-собесы, привязка к конкретному работодателю. Любые материалы под конкретного менти — вне этого репозитория (репозиторий публичный; приватное — в менторской базе). - Доведение стенда до промышленной надёжности (отказоустойчивость, безопасность, масштабирование) — кроме коротких пометок «в проде иначе». ## 5. Критерии успеха - Менти проходит урок за неделю **сам**, без построчного разбора с ментором. - Может своими словами объяснить паттерн урока и привязать его к обычной кликстрим-аналитике. - На сессии приносит осмысленные вопросы по сути, а не «застрял на запуске». - Эталонный код проходит «тест одного прохода» (см. `LESSON_STANDARD.md`). ## 6. Связанные документы и порядок работ Порядок создания артефактов: 1. **`PRD.md`** (этот документ) — рамка: что, зачем, скоуп. **Замороженный** документ. 2. **`LEARNING_PLAN.md`** — высокоуровневый план обучения: карта уроков, маршрут менти, результаты аудита путей. Пишется после согласования PRD. 3. **`LESSON_STANDARD.md`** — стандарт уроков: шаблон урока, стандарт качества кода, самопроверка. Рабочий чеклист, открывается при написании каждого урока. 4. **Уроки** — по одному, по шаблону из `LESSON_STANDARD.md`, начиная с урока 1 (Kafka→CH). Навигация по всем файлам курса — в `docs/course/README.md`. Материалы под конкретного менти (под кого первый прогон, привязка к работодателю, подготовка к собесам) — **вне этого репозитория**, в приватной менторской базе. ## 7. Открытые вопросы / на будущее - Глубина урока 4 (мониторинг): сколько внутреннего устройства показывать против «просто наблюдай дашборд». - Нужна ли BI-витрина (Superset) уже в первой версии или переносим на следующую. - Переиспользование: после первого прогона — ретроспектива и обобщение материала под других менти.