From 2f905e4c73329647d6b5d902b980130e1d4d543a Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sat, 6 Jun 2026 19:06:16 +0300 Subject: [PATCH] =?UTF-8?q?docs(course):=20README=20=D0=BA=D1=83=D1=80?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=20=D0=BC=D0=B5=D0=BD=D1=82=D0=B8=20+=20?= =?UTF-8?q?=D0=BA=D1=80=D1=8E=D1=87=D0=BE=D0=BA=20=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - прежний README вёл читателя в авторские доки (PRD/LEARNING_PLAN/ LESSON_STANDARD), а менти нужна точка входа: с чего начать, как ходить по урокам и как поднять стенд. Цель PRD — самодостаточный материал. - Что: - mentee-first структура: «что нужно до старта» (make up → ddl → LIMIT=50 make data, совпадает с уроками и правилом малого среза), индекс уроков 0–6 со ссылками и режимом, «как проходить». - блок-крючок «сам / с ментором» в тон роадмапа + CTA в Telegram. - авторские доки убраны в секцию «Под капотом курса». - Проверка: - все 11 внутренних ссылок резолвятся; ai-text-lint чист (house style сохранён). --- docs/course/README.md | 89 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 18 deletions(-) diff --git a/docs/course/README.md b/docs/course/README.md index 5c9c325..bfaa579 100644 --- a/docs/course/README.md +++ b/docs/course/README.md @@ -1,32 +1,85 @@ # Курс «Кликстрим на ClickHouse» (со звёздочкой) -Продвинутый курс для менти, уже прошедших базовую программу: основные паттерны -инженерии данных на стенде Kafka + ClickHouse + Airflow + мониторинг + BI. Менти проходит -материал самостоятельно, а на еженедельном созвоне с ментором разбирает затыки и отвечает -на вопросы по теме — чтобы проверить глубину понимания. +Это продвинутый курс «со звёздочкой» для тех, кто уже прошёл базовую программу. Ты +поднимаешь у себя живой стенд (Kafka + ClickHouse + Airflow + мониторинг + BI) и +проходишь по нему основные паттерны инженерии данных. Курс самодостаточный — он +рассчитан на то, что ты идёшь по нему сам: каждый урок объясняет, зачем нужен паттерн, +даёт потрогать его руками и проверить себя в конце. -Сам курс — это блок «со звёздочкой» открытого роадмапа Data Engineer +Курс — блок «со звёздочкой» открытого роадмапа Data Engineer ([de.dementev.space](https://de.dementev.space/), он же -[на GitHub](https://github.com/dementev-dev/de-roadmap)). Роадмап открыт и устроен так, -что идти по нему можно в одиночку; с ментором — ощутимо короче дорога: добавляются -персональный план, разбор домашек и код-ревью. +[на GitHub](https://github.com/dementev-dev/de-roadmap)). -## Что где искать +> **Пройти можно самому — а можно с ментором.** В одиночку реально — курс для того и +> сделан. С ментором — быстрее, понятнее и чаще с лучшим результатом: +> персональный план под твою ситуацию, разбор затыков на еженедельном созвоне, код-ревью +> твоих правок и проверка, что ты понял тему вглубь, а не просто прокликал. Хочешь так — +> напиши в Telegram [@dementev_dev](https://t.me/dementev_dev). -| Файл | Что это | Когда открывать | -|------|---------|-----------------| -| [`PRD.md`](./PRD.md) | Рамка: зачем курс, цели, аудитория, скоуп, критерии успеха | Чтобы понять «что и зачем». Замороженный документ | -| [`LEARNING_PLAN.md`](./LEARNING_PLAN.md) | План обучения: карта уроков, маршрут, аудит эталонных путей | Чтобы понять «в каком порядке и из чего» | -| [`LESSON_STANDARD.md`](./LESSON_STANDARD.md) | Стандарт уроков: шаблон урока, качество кода, самопроверка | Рабочий чеклист при написании каждого урока | -| [`lessons/`](./lessons/) | Сами уроки, по одному файлу (есть: уроки 0–6) | Прохождение курса менти | +## Что нужно до старта -## Порядок чтения +- **База пройдена:** SQL, моделирование данных, Python, Git, Docker, Airflow. ClickHouse + знать заранее не нужно — это и есть тема курса. +- **Обзорное видео по Kafka из роадмапа** — посмотри перед уроком 0. Оттуда ты возьмёшь + словарь («топик», «партиция», «offset», «consumer-группа», «lag»), а урок 0 свяжет эти + слова с живым стендом. +- **Железо:** стек тяжёлый — Kafka, ClickHouse, Airflow, Superset, Prometheus и Grafana + поднимаются одновременно. Нужна машина, которая это потянет. +- **Подними стенд и залей малый срез** (из корня репозитория) — этого хватит, чтобы + начать, и прогон быстрый: -1. Новому участнику (или будущей сессии): начать с `PRD.md`, затем `LEARNING_PLAN.md`. -2. Перед написанием урока: держать открытым `LESSON_STANDARD.md`. + ```bash + make up # поднять контейнеры + make ddl # создать схему в ClickHouse (базы, таблицы, VIEW) + LIMIT=50 make data # залить по 50 строк на топик в Kafka + ``` + + Дальше каждый урок в секции «Руки» сам напоминает, что перезапустить и с каким срезом. + Точные шаги, параметры и troubleshooting — в [`docs/OPERATIONS.md`](../OPERATIONS.md). + +## Уроки + +Проходи по порядку — уроки 0→4 повторяют сам пайплайн (Kafka → STG → ODS → DDS → +оркестрация), а 5 и 6 надстраиваются поверх готовых данных. В колонке «режим»: +**наблюдение** — только смотрим, **руки** — запускаешь и меняешь сам. + +| # | Урок | Режим | О чём | +|---|------|-------|-------| +| 0 | [Вводный по Kafka](./lessons/00_kafka_intro.md) | наблюдение | Ходим по Kafka UI: где лежат события, кто их читает, как Kafka помнит, докуда дочитано | +| 1 | [Kafka → ClickHouse (STG)](./lessons/01_kafka_to_clickhouse.md) | руки | Как сообщение из топика становится строкой ClickHouse через Kafka engine и Materialized View | +| 2 | [STG → ODS: типизация и DQ-split](./lessons/02_stg_to_ods.md) | руки | Приводим сырьё к типам и разводим чистое и битое по разным таблицам | +| 3 | [ODS → DDS: сборка сущностей](./lessons/03_ods_to_dds.md) | руки | Собираем `click` и `event` из кусочков (argMax, JOIN) и встречаем «сирот» | +| 4 | [Оркестрация в Airflow](./lessons/04_airflow_orchestration.md) | руки | Всю цепочку — в один DAG с зависимостями и честным гейтом целостности | +| 5 | [Мониторинг: Prometheus и Grafana](./lessons/05_monitoring.md) | наблюдение + мини-правка | Смотрим систему со стороны; гасим сервис — видим, как краснеет алерт | +| 6 | [BI-витрина в Superset](./lessons/06_superset_bi.md) | руки (опционально) | Дашборд поверх ClickHouse: KPI, динамика, воронка | + +## Как проходить + +- **По одному уроку за раз** — ожидаемый темп около дня на урок (уроки короткие и + односоставные: один паттерн на урок). +- **Каждый урок устроен одинаково:** зачем паттерн нужен → что запустить и понаблюдать → + чтение эталонного кода → одна управляемая правка с видимым результатом → самопроверка. + Любая правка завершается шагом **«верни как было»**, чтобы стенд не остался сломанным. +- **Идёшь сам** — опорой служат секции «Проверь себя» в конце каждого урока: по ним + видно, понял ты тему или только пробежал глазами. +- **Идёшь с ментором** — еженедельный созвон покрывает несколько уроков сразу: туда + несёшь затыки и ответы «своими словами» из тех же секций «Проверь себя». ## Границы Материалы под конкретного менти (привязка к работодателю, легенда, подготовка к собесам) в этот репозиторий **не кладём** — репозиторий публичный, приватное живёт в менторской базе. + +--- + +## Под капотом курса (для автора и любопытных) + +Эти документы менти для прохождения не нужны — они объясняют, как курс устроен и почему +именно так. Открывай, если ведёшь курс или хочешь заглянуть в его «исходники». + +| Файл | Что это | +|------|---------| +| [`PRD.md`](./PRD.md) | Рамка: зачем курс, цели, аудитория, скоуп, критерии успеха (замороженный документ) | +| [`LEARNING_PLAN.md`](./LEARNING_PLAN.md) | План обучения: карта уроков, маршрут, аудит эталонных путей | +| [`LESSON_STANDARD.md`](./LESSON_STANDARD.md) | Стандарт уроков: шаблон, качество кода, самопроверка — рабочий чеклист при написании |