- Зачем: - превратить стенд в самостоятельный учебный материал (трек «со звёздочкой») для продвинутых менти. - Что: - docs/course/: PRD, LEARNING_PLAN, LESSON_STANDARD и README-индекс. - AGENTS.md: ссылка на курс в разделе навигации. - CLAUDE.md: @-include AGENTS.md для контекста агента. - Проверка: - открыть docs/course/README.md и пройти по ссылкам на PRD/план/стандарт.
9.2 KiB
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. Цели (чему учим)
К концу курса менти умеет:
- Заземлять поток из Kafka в ClickHouse через Kafka engine и Materialized View (ClickHouse сам забирает сообщения из топика), понимая роль топиков, партиций, offset'ов и consumer-групп.
- Строить слоёный ETL (STG → ODS → DDS → DM) и объяснять, где уместен Materialized View (стриминговое приземление данных), а где батч (так удобнее управлять и наблюдать за пересчётом).
- Читать и объяснять оркестрацию в Airflow: DAG, зависимости задач, проверки качества данных, остановку пайплайна при нарушениях.
- Понимать, как устроен мониторинг пайплайна (метрики, экспортёры, дашборды).
- (Опционально) Подключать 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. Связанные документы и порядок работ
Порядок создания артефактов:
PRD.md(этот документ) — рамка: что, зачем, скоуп. Замороженный документ.LEARNING_PLAN.md— высокоуровневый план обучения: карта уроков, маршрут менти, результаты аудита путей. Пишется после согласования PRD.LESSON_STANDARD.md— стандарт уроков: шаблон урока, стандарт качества кода, самопроверка. Рабочий чеклист, открывается при написании каждого урока.- Уроки — по одному, по шаблону из
LESSON_STANDARD.md, начиная с урока 1 (Kafka→CH).
Навигация по всем файлам курса — в docs/course/README.md.
Материалы под конкретного менти (под кого первый прогон, привязка к работодателю, подготовка к собесам) — вне этого репозитория, в приватной менторской базе.
7. Открытые вопросы / на будущее
- Глубина урока 4 (мониторинг): сколько внутреннего устройства показывать против «просто наблюдай дашборд».
- Нужна ли BI-витрина (Superset) уже в первой версии или переносим на следующую.
- Переиспользование: после первого прогона — ретроспектива и обобщение материала под других менти.