Files
ddadmin 7514e5a625 docs(course): обновлены PRD и программа курса
- Зачем:
  - нужно выровнять учебную программу с PRD и явно отделить стартовый onboarding от практики в ноутбуках.
- Что:
  - обновлены название курса и файл программы, а структура материалов пересобрана вокруг стартовой документации, 8 практических модулей и вспомогательных артефактов.
  - добавлены трассировка Learning Outcomes, hands-on упражнение для модуля 2 и уточнения по доставке учебного data bundle.
  - зафиксированы acceptance criteria, минимальный scope glossary и статус partitioning как legacy-темы вне обязательного трека v1.
- Проверка:
  - просмотрен git diff HEAD~1 -- docs/course_prd.md docs/course_program.md.
  - проверен git diff --cached --stat перед amend.
2026-03-06 23:19:20 +03:00

16 KiB
Raw Permalink Blame History

Product Requirements Document (PRD): Учебный курс «Lakehouse без магии»

1. Product Vision & Value Proposition

Видение: создать практический курс, который помогает студенту перейти от привычной картины мира классических СУБД к базовой рабочей модели Lakehouse без лишнего стресса и без опасных иллюзий про "магическую" распределенную платформу.

Ценность: дать безопасную и наглядную песочницу на базе локального стенда (Spark + Trino + Iceberg + MinIO + PostgreSQL), в которой студент может руками повторить типовые повседневные действия Data Engineer и понять, как устроена современная Lakehouse-архитектура.

2. Target Audience & Prerequisites

Основная аудитория: студент курса de-roadmap, который уже прошел или уверенно знает:

  • SQL
  • Python
  • Git
  • Airflow
  • Greenplum

Дополнительно: возможно, уже поверхностно знаком с NiFi или Kafka, но это не является обязательным требованием.

Важно: курс рассчитан не на абсолютного новичка, а на человека, который уже понимает базовые DE-процессы и хочет перенести это понимание в мир Lakehouse.

3. Problem Statement & JTBD

Ключевая проблема: при первом столкновении с Lakehouse студент часто не понимает:

  • как набор файлов в объектном хранилище может быть "таблицей";
  • зачем отдельно нужны storage, catalog и compute;
  • почему один движок может писать данные, а другой читать те же самые таблицы;
  • как безопасно работать с такими таблицами, не ломая данные и не теряя воспроизводимость пайплайна.

В результате Lakehouse воспринимается либо как непонятная магия, либо как хаотичный набор технологий без общей модели.

Основной JTBD: «Когда я попадаю в команду, где есть Lakehouse-стек, я хочу быстро понять, как он устроен и как в нем выполнять простые рабочие задачи, чтобы не быть опасным для окружения и не тратить недели на распаковку базовых концепций».

Вторичный JTBD: «Я хочу руками пощупать популярный стек Spark + Trino + Iceberg + S3-compatible storage, чтобы увереннее обсуждать такие системы на собеседованиях и в работе».

4. Product Goals

Курс должен помочь студенту:

  1. Получить практический, а не только теоретический, ввод в Lakehouse.
  2. Освоить безопасный набор базовых ежедневных действий, полезных на старте работы.
  3. Понять архитектуру ровно настолько, чтобы осознанно пользоваться инструментами и не допускать грубых ошибок.
  4. Сопоставить новые концепции с уже знакомой картиной мира PostgreSQL/Greenplum и классических DWH-слоев.

5. Learning Outcomes

После прохождения курса студент:

  1. Понимает различие между storage, catalog и compute, и может объяснить роль MinIO, PostgreSQL, Spark и Trino в этом стенде.
  2. Умеет поднять локальный стенд, проверить его базовую работоспособность и использовать логи/веб-интерфейсы для первичной диагностики проблем.
  3. Умеет загрузить raw-данные, прочитать их в Spark, проверить схему и подготовить данные к дальнейшей обработке.
  4. Умеет создать и заполнить Iceberg-таблицу как основной табличный формат курса.
  5. Умеет реализовать простой поток raw -> bronze -> silver с базовыми трансформациями и сохранением воспроизводимости шагов.
  6. Умеет читать одну и ту же таблицу из Spark и Trino и понимает, почему это возможно без копирования данных.
  7. Умеет выполнить базовые безопасные операции с таблицей: изменение схемы, просмотр snapshot-ов, чтение предыдущего состояния, базовый compaction и vacuum.

Трассировка этих outcomes на модули и checkpoints фиксируется в course_program.md.

6. Teaching Principles

Принцип 1. Практика первична. Курс не должен превращаться в обзорную лекцию. Теория нужна для объяснения того, что студент делает руками.

Принцип 2. Ноутбук как учебник и тренажер. В ноутбуках должны быть:

  • готовые демонстрационные ячейки с объяснением подхода;
  • обязательные самостоятельные задания на похожее действие;
  • checkpoints с ожидаемым результатом.

Принцип 3. Постоянный мостик к знакомому миру. Новые концепции объясняются через короткие сравнения с PostgreSQL/Greenplum и классической нотацией слоев stg/ods/dds, где это уместно.

Принцип 4. Безопасность важнее глубины. Курс должен в первую очередь снижать риск типовых ошибок новичка, а не учить всем возможностям стека.

7. Risk Reduction / Common Mistakes

Курс должен явно учить не допускать следующие ошибки:

  1. Путать storage, catalog и compute, не понимая, где реально лежат данные и кто отвечает за метаданные.
  2. Воспринимать Lakehouse как "одну базу данных", скрывающую физическую структуру хранения.
  3. Делать разрушительные операции вслепую: неаккуратный overwrite, drop, неконтролируемую перезапись слоя.
  4. Смешивать роли слоев raw, bronze, silver, из-за чего теряется происхождение и воспроизводимость данных.
  5. Менять схему и типы данных без понимания влияния на downstream-чтение и на другие движки.

8. Scope

В первой версии курса в скоупе:

  • архитектурная модель storage + catalog + compute;
  • один основной табличный формат: Iceberg;
  • работа с raw-данными;
  • построение слоев bronze и silver;
  • чтение и запись через Spark;
  • чтение через Trino;
  • базовое schema evolution;
  • snapshot/time travel на прикладном уровне;
  • базовый compaction/vacuum с параллелями к Greenplum AppendOnly;
  • набор практик в Jupyter Notebooks с обязательными заданиями и checkpoints;
  • стартовая документация до первого ноутбука: prerequisites, запуск стенда, вход в Jupyter и базовый troubleshooting.

Ориентировочная программа курса вынесена в отдельный документ: course_program.md.

9. Dataset Strategy

Основной датасет курса: NYC TLC Yellow Taxi Trip Records + Taxi Zone Lookup.

Почему он выбран:

  • это узнаваемый и реалистичный DE-кейс;
  • он хорошо подходит для слоев raw -> bronze -> silver;
  • его удобно использовать для демонстрации работы Spark, Trino и Iceberg;
  • он поставляется в PARQUET, что делает raw-слой ближе к реальной жизни.

Режимы использования данных:

  • Default: 3-6 месяцев данных для стандартного прохождения курса;
  • Extended: до полного года данных для более тяжелого режима или будущего расширения курса.

Методическое решение: курс строится вокруг одного домена данных, но не требует жесткого сквозного проекта. Основной формат курса - набор связанных практик на одном и том же наборе данных.

Механика доставки данных в v1:

  • raw-датасет не хранится в репозитории целиком;
  • стартовая документация должна давать воспроизводимый способ получить фиксированный учебный набор данных (Default или Extended) из публичного источника;
  • Taxi Zone Lookup доставляется тем же способом, что и основной датасет;
  • перед началом модуля про raw-данные студент должен иметь локальный data bundle на хосте;
  • в модуле про raw-ingest студент загружает уже полученные файлы в raw-зону MinIO, а не ищет и не скачивает данные вручную прямо из ноутбука;
  • ручная загрузка файлов через UI допускается только как fallback-сценарий, а не как основной путь прохождения.

10. User Experience / Learning Flow

Курс строится по модели "объяснение -> демонстрация -> самостоятельное повторение -> checkpoint".

Каждый урок должен:

  1. Коротко объяснить новую концепцию.
  2. Показать готовый рабочий пример.
  3. Дать студенту похожее задание для самостоятельного выполнения.
  4. Заканчиваться проверяемым результатом.

Формат прохождения: желательно с ментором, но курс должен быть самодостаточным и для самостоятельного изучения.

11. Product Targets & Acceptance Criteria

Ориентиры продукта:

Это целевые ориентиры курса, но не blocking acceptance criteria для материалов.

  1. Студент проходит курс за ~12-15 часов вдумчивой работы.
  2. Студент после курса способен безопасно выполнить базовые операции в Lakehouse-стенде без постоянной внешней помощи.
  3. Студент может внятно объяснить ключевые архитектурные принципы Lakehouse на уровне junior/middle interview readiness.

Acceptance Criteria для учебных материалов и результата:

  1. В составе курса есть стартовая документация до первого ноутбука, включая prerequisites, запуск стенда, вход в Jupyter и получение учебного data bundle.
  2. Студент проходит обязательные checkpoints по урокам.
  3. Студент самостоятельно выполняет набор практик на одном датасете, включая:
    • загрузку raw-данных;
    • построение bronze;
    • построение silver;
    • создание/чтение Iceberg-таблицы;
    • чтение одной и той же таблицы через Spark и Trino;
    • демонстрацию базового schema evolution;
    • демонстрацию snapshot/time travel;
    • демонстрацию базового compaction/vacuum.
  4. Студент может своими словами объяснить:
    • что такое Lakehouse и чем он отличается от классической БД;
    • как разделены storage, catalog, compute;
    • что такое Iceberg в практическом смысле;
    • почему Spark может писать, а Trino читать одни и те же таблицы;
    • зачем нужны слои raw -> bronze -> silver.

12. Technical Requirements

В скоупе:

  • использование существующего docker-compose.yml (Spark, Trino, MinIO, PostgreSQL, Jupyter);
  • подготовка учебных датасетов и/или инструкций по их загрузке в репозиторий;
  • наличие воспроизводимого способа получить учебный data bundle без ручного поиска по внешним сайтам;
  • поддержка выполнения запросов к Trino из ноутбуков;
  • подготовка Jupyter Notebooks как основного формата практической части курса;
  • подготовка стартовой документации для входа в курс до первого запуска ноутбуков;
  • наличие воспроизводимых шагов для старта, сброса и повторного прохождения практик.

13. Out of Scope (v1)

Вне первой версии курса:

  • gold-слой и полноценные бизнес-витрины;
  • Airflow, Kafka, NiFi, streaming, CDC;
  • сложные MERGE-сценарии, row-level deletes и update-heavy кейсы;
  • партиционирование и partition pruning как отдельная учебная тема первой версии;
  • глубокий performance tuning;
  • production security, governance, multi-user setup;
  • Kubernetes / облачное развертывание;
  • детальное сравнение нескольких типов catalog;
  • глубокий разбор internals Iceberg на уровне спецификации.