Files
mini-lakehouse-lab/docs/PRD_Course.md
T
ddadmin 9d855c9b58 feat(docs): добавлены PRD и программа обучения для курса по Lakehouse
- Зачем:
  - Формализовать цели, аудиторию и структуру учебного курса для плавного погружения джунов в Lakehouse-архитектуру.
- Что:
  - Создан docs/PRD_Course.md с описанием JTBD, "Aha-moments" и метрик успеха.
  - Создан docs/COURSE_PLAN.md с детальной программой из 10 интерактивных уроков.
- Проверка:
  - Файлы присутствуют в директории docs и корректно ссылаются друг на друга.
2026-03-06 21:06:46 +03:00

6.6 KiB
Raw Blame History

Product Requirements Document (PRD): Учебный курс «Введение в Lakehouse»

1. Product Vision & Value Proposition

Видение: Создать интерактивный практический курс, который "сломает" привычную картину мира монолитных баз данных (PostgreSQL/Greenplum) и плавно перестроит мышление студентов на парадигму распределенных систем (Lakehouse). Ценность: Дать безопасную, наглядную "песочницу" для старта работы с современным Lakehouse, чтобы переход от классических БД к связке S3 + Iceberg + Spark/Trino прошел легко, предсказуемо и с минимальным трением.

2. Target Audience (Целевая аудитория)

  • Кто: Junior Data Engineers, менти, студенты.
  • Их текущая картина мира: Привыкли к классическим СУБД. Для них база данных — это единый "черный ящик", где движок вычислений (Compute) и жесткие диски (Storage) неразделимы, строго реляционны и транзакционны.
  • Бэкграунд: Уверенно пишут SQL, знают Python, понимают классические слои DWH (Raw, ODS, DDS), умеют работать с Docker.

3. Problem Statement & Jobs-To-Be-Done (JTBD)

Ключевая проблема: Когнитивный диссонанс при столкновении с Big Data и Lakehouse. Студенты не понимают, как набор Parquet-файлов в папках (S3) может быть "базой данных", зачем нужен отдельный каталог метаданных (Iceberg/Hive) и почему для записи мы используем один инструмент (Spark), а для чтения — другой (Trino). У них нет четкой ментальной модели распределенных систем.

Jobs-To-Be-Done (JTBD):

  • Основной JTBD: «Когда я перехожу на новый проект или получаю задачу, связанную с Lakehouse, я хочу быстро понять общую архитектуру и влиться в работу с минимальным трением, чтобы не чувствовать себя слепым котенком и не сломать прод из-за непонимания распределенной природы данных».
  • Вторичный JTBD: «Я хочу получить практический обзор современных технологий (Spark, Iceberg, Trino), чтобы уверенно отвечать на вопросы на собеседованиях и расширить свой кругозор за пределы PostgreSQL».

4. Ключевые "Aha-Moments" (Моменты озарения)

Курс должен быть спроектирован так, чтобы студент через практику испытал следующие инсайты:

  1. Storage is Just Files: «Ого, таблица в Lakehouse — это просто набор Parquet-файлов в бакете MinIO!»
  2. Decoupled Compute: «Вау, я могу писать данные Spark'ом, а читать Trino, и они оба смотрят на одни и те же файлы без их копирования!»
  3. The Magic of Metadata: «Так вот зачем нужен Iceberg! Это просто умный JSON-манифест, который говорит движкам, какие именно файлы читать для Time Travel или партиционирования».

5. Метрики Успеха и Формат (Goals & Success Metrics)

Цели продукта:

  1. Студент может пройти курс от начала до конца за ~12 часов вдумчивой работы в браузере (Jupyter + MinIO UI + Trino UI).
  2. Студент может своими словами (на собеседовании или коллегам) объяснить архитектуру Lakehouse (Storage, Compute, Catalog) и зачем нужен табличный формат (Iceberg).
  3. Студент умеет самостоятельно реализовать базовый пайплайн (чтение, трансформация, запись) в парадигме Lakehouse.

User Experience / Flow (Пользовательский опыт): Подход «50/50 (Теория + Самостоятельная практика)». Ноутбуки предоставляют теорию, демистифицирующую Lakehouse (нацеленную на вызов "Aha-Moments"), примеры кода (50%) и заготовки ячеек. Студент изучает пример, а затем самостоятельно дописывает код для решения задачи, закрепляя новые концепции на практике. Финал курса — самостоятельный сквозной мини-пайплайн.


6. Содержание (Scope)

Ориентировочная программа на 10 интерактивных уроков (Jupyter Notebooks) вынесена в отдельный документ: COURSE_PLAN.md.


7. Технические Требования и Ограничения

Technical Requirements (В скоупе)

  • Использование существующего docker-compose.yml (Spark, Trino, MinIO, PostgreSQL, Jupyter).
  • Установка дополнительных библиотек в образ Jupyter (например, trino-python-client), чтобы студенты могли выполнять запросы к Trino прямо из ноутбука.
  • Подготовка небольших, но реалистичных датасетов (CSV/JSON) в папке репозитория.

Out of Scope (Вне скоупа / На будущее)

  • Оркестрация пайплайнов (Airflow, Dagster).
  • Развертывание в Kubernetes / Облаках.
  • Тюнинг производительности Spark на больших объемах данных.