- Зачем: - нужно выровнять учебную программу с 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.
16 KiB
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
Курс должен помочь студенту:
- Получить практический, а не только теоретический, ввод в Lakehouse.
- Освоить безопасный набор базовых ежедневных действий, полезных на старте работы.
- Понять архитектуру ровно настолько, чтобы осознанно пользоваться инструментами и не допускать грубых ошибок.
- Сопоставить новые концепции с уже знакомой картиной мира
PostgreSQL/Greenplumи классических DWH-слоев.
5. Learning Outcomes
После прохождения курса студент:
- Понимает различие между
storage,catalogиcompute, и может объяснить рольMinIO,PostgreSQL,SparkиTrinoв этом стенде. - Умеет поднять локальный стенд, проверить его базовую работоспособность и использовать логи/веб-интерфейсы для первичной диагностики проблем.
- Умеет загрузить raw-данные, прочитать их в
Spark, проверить схему и подготовить данные к дальнейшей обработке. - Умеет создать и заполнить
Iceberg-таблицу как основной табличный формат курса. - Умеет реализовать простой поток
raw -> bronze -> silverс базовыми трансформациями и сохранением воспроизводимости шагов. - Умеет читать одну и ту же таблицу из
SparkиTrinoи понимает, почему это возможно без копирования данных. - Умеет выполнить базовые безопасные операции с таблицей: изменение схемы, просмотр 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
Курс должен явно учить не допускать следующие ошибки:
- Путать
storage,catalogиcompute, не понимая, где реально лежат данные и кто отвечает за метаданные. - Воспринимать Lakehouse как "одну базу данных", скрывающую физическую структуру хранения.
- Делать разрушительные операции вслепую: неаккуратный
overwrite,drop, неконтролируемую перезапись слоя. - Смешивать роли слоев
raw,bronze,silver, из-за чего теряется происхождение и воспроизводимость данных. - Менять схему и типы данных без понимания влияния на 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".
Каждый урок должен:
- Коротко объяснить новую концепцию.
- Показать готовый рабочий пример.
- Дать студенту похожее задание для самостоятельного выполнения.
- Заканчиваться проверяемым результатом.
Формат прохождения: желательно с ментором, но курс должен быть самодостаточным и для самостоятельного изучения.
11. Product Targets & Acceptance Criteria
Ориентиры продукта:
Это целевые ориентиры курса, но не blocking acceptance criteria для материалов.
- Студент проходит курс за
~12-15 часоввдумчивой работы. - Студент после курса способен безопасно выполнить базовые операции в Lakehouse-стенде без постоянной внешней помощи.
- Студент может внятно объяснить ключевые архитектурные принципы Lakehouse на уровне junior/middle interview readiness.
Acceptance Criteria для учебных материалов и результата:
- В составе курса есть стартовая документация до первого ноутбука, включая prerequisites, запуск стенда, вход в
Jupyterи получение учебного data bundle. - Студент проходит обязательные
checkpointsпо урокам. - Студент самостоятельно выполняет набор практик на одном датасете, включая:
- загрузку raw-данных;
- построение
bronze; - построение
silver; - создание/чтение
Iceberg-таблицы; - чтение одной и той же таблицы через
SparkиTrino; - демонстрацию базового schema evolution;
- демонстрацию snapshot/time travel;
- демонстрацию базового
compaction/vacuum.
- Студент может своими словами объяснить:
- что такое
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на уровне спецификации.