Capstone-проект: обзор и требования
За 17 модулей мы разобрали форматы побайтово — от Parquet и ORC через Arrow до Delta Lake, Iceberg, Hudi и Paimon. Изучили кодировки, компрессию, schema evolution. В Модуле 17 построили decision framework.
Теперь пора применить всё вместе. Capstone-проект — это не экзамен с правильными ответами. Это инженерная задача с trade-offs, где вы проектируете реальную data-платформу и защищаете каждый выбор формата.
Capstone-проект требует знания всех предыдущих модулей. Если вы пропустили workload archetypes или бенчмаркинг — вернитесь к ним перед началом.
Сценарий: мультиформатная data-платформа
Вы — data-архитектор в компании, которая строит платформу обработки данных для e-commerce. Платформа должна решать четыре задачи одновременно:
CDC Ingestion
Change Data Capture — захват изменений из OLTP-базы (PostgreSQL/MySQL) в реальном времени. Каждое INSERT/UPDATE/DELETE становится событием в Kafka. Формат: Avro или Protobuf.Lakehouse Storage
Lakehouse хранение — единая система хранения для всех данных: raw, curated, aggregated. Table format обеспечивает ACID, time travel, schema evolution поверх object storage.Analytics Queries
Аналитические запросы — ad-hoc SQL от аналитиков и BI-дашборды. Требования: scan speed, predicate pushdown, partition pruning. Query engine: Spark SQL / Trino / DuckDB.ML Features
ML Feature Extraction — вычисление фичей для моделей машинного обучения. Random access к конкретным строкам/колонкам. Batch и near-real-time. Feature store как промежуточный слой.Масштаб и ограничения
Платформа обслуживает средний e-commerce:
Эти параметры — не абстракция. Они соответствуют реальному среднему e-commerce с 5-10 млн пользователей. Если ваш опыт — меньший масштаб, используйте числа как ориентир. Если больший — масштабируйте пропорционально.
Архитектура: от источника до потребителя
Capstone-проект охватывает полный путь данных. Вот референсная архитектура — ваша задача выбрать конкретные форматы на каждом уровне:
PostgreSQL (OLTP)
OLTP-база (PostgreSQL): источник правды. Debezium CDC коннектор читает WAL и публикует change events. Каждый event: before/after state + metadata (LSN, timestamp, op type).Clickstream (Web)
Clickstream — события из веб-приложения: page views, clicks, searches. Формат: JSON → Avro через Schema Registry. Объём: ~100K events/sec peak.External APIs
Внешние API: платёжные системы, доставка, CRM. Данные приходят в JSON/XML, конвертируются в единый internal формат. Объём: ~1K events/sec.Kafka + Schema Registry
Apache Kafka — центральная шина данных. Все потоки проходят через Kafka. Schema Registry обеспечивает контракт между producers и consumers. Retention: 7 дней (replayability).Bronze (Raw)
Bronze layer: raw данные в исходной схеме. Минимальная трансформация — только десериализация + добавление metadata (ingestion timestamp, source). Append-only, full history.Silver (Curated)
Silver layer: очищенные, дедуплицированные данные. SCD Type 2 для dimensions. Merge/upsert операции. Партиционирование по бизнес-ключам (date, region).Gold (Aggregated)
Gold layer: агрегированные данные для BI и ML. Materialized views, pre-aggregated metrics, feature tables. Оптимизировано для read — sort order, Z-order, column pruning.Spark SQL / Trino
Spark SQL / Trino — для ad-hoc и batch аналитики. Predicate pushdown, partition pruning, columnar vectorized reads. Подключение к table format через каталог (Hive Metastore / Nessie / Unity).Feature Store
Feature Store (Feast / Tecton) — для ML pipeline. Batch features из gold layer, online features из Redis/DynamoDB. Формат хранения offline features: Parquet. Online: Arrow IPC или custom binary.BI Dashboards
BI Tools (Superset / Metabase) — дашборды и отчёты. Подключение через SQL endpoint. Кеширование результатов. Pre-aggregated gold tables для быстрого отклика.Требования к проекту
Deliverables
Capstone-проект состоит из четырёх частей — по одной на каждый оставшийся урок:
Критерии оценки
Каждый deliverable оценивается по трём измерениям:
Техническая корректность
Техническая корректность: правильно ли описан формат? Совместимы ли выбранные encoding и compression? Соответствует ли table format workload? Нет ли фактических ошибок?Обоснование
Обоснование решений: каждый выбор привязан к конкретному требованию. Ссылки на материал курса. Trade-offs проговорены явно. Альтернативы рассмотрены и отвергнуты с причиной.Практичность
Практическая реализуемость: можно ли это реально построить? Учтены ли operational concerns (мониторинг, compaction, vacuum)? Есть ли путь миграции если requirements изменятся?Как работать с capstone-проектом
Подход: workload-first
Используйте decision framework из Модуля 17:
- Определите workload — какой архетип (OLAP, streaming, ML, OLTP) доминирует на каждом уровне
- Выведите требования — из workload следуют конкретные требования (write throughput, scan speed, merge latency)
- Выберите формат — формат должен удовлетворять требованиям, а не наоборот
- Проверьте совместимость — encoding + compression + file format + table format должны работать вместе
- Обоснуйте — каждый выбор привязан к конкретному требованию и материалу курса
единственного “правильного” ответа. Разные комбинации форматов могут удовлетворять требования. Важно не что вы выбрали, а почему и какие trade-offs приняли.
Чего избегать
Навигация по capstone-урокам
Следующие три урока — пошаговое выполнение проекта:
| Урок | Тема | Основные модули-референсы |
|---|---|---|
| 02. Ingestion Pipeline | Serialization, Schema Registry, evolution | M04 Avro, M05 Protobuf, M10 Schema Evolution |
| 03. Storage Layer | File + table format, encoding, compression | M02 Parquet, M03 ORC, M08 Encoding, M09 Compression, M11-14 Table Formats |
| 04. Benchmarking | Docker lab, metrics, report | M17 Benchmarking |
Рекомендуемый порядок: 02 → 03 → 04. Ingestion определяет формат данных в Kafka, storage layer потребляет эти данные, бенчмарки проверяют выбор. Но если хотите начать со storage layer — это тоже допустимо, при условии что serialization выбор потом согласуется.
Референсные материалы
Для каждого deliverable полезны конкретные уроки:
Ingestion (Урок 02):
- Avro schema design — правила проектирования Avro-схем
- Protobuf wire format — как Protobuf кодирует данные
- Schema Registry — конфигурация и compatibility modes
- Forward/backward compatibility — правила совместимости
Storage (Урок 03):
- Parquet file layout — row groups, column chunks, pages
- ORC file layout — stripes, indexes, bloom filters
- Encoding deep-dive — dictionary, RLE, delta, bit-packing
- Compression tuning — codec selection per column
- Delta Lake transactions — commit log, checkpoint, vacuum
- Iceberg metadata — manifest files, snapshot isolation
Benchmarking (Урок 04):
- Benchmarking methodology — dimensions, pitfalls, reproducibility
- Table format selection — criteria per workload
- Migration strategies — как мигрировать между форматами
Приступаем к первому deliverable — проектирование ingestion pipeline.