docs(docs): add 5-minute demo cheatsheet

- Why:
  - give a student a short, repeatable interview demo script
- What:
  - add 5-minute timeline with speaking prompts
  - add SQL/CLI commands and fallback plan for UI issues
- Check:
  - review markdown content in docs/DEMO_CHEATSHEET_5MIN.md
This commit is contained in:
2026-02-09 18:52:16 +03:00
parent f411a46aea
commit e6c26ce353
+114
View File
@@ -0,0 +1,114 @@
# Шпаргалка для 5-минутного демо проекта
Цель: за 5 минут показать работодателю рабочий end-to-end пайплайн и инженерный уровень исполнения.
---
## 0) Подготовка до звонка (1 раз)
```bash
make up
docker compose exec -T airflow-webserver airflow dags trigger ddl_init
docker compose exec -T airflow-webserver airflow dags trigger kafka_load --conf '{"limit": 50, "reset_topics": true}'
docker compose exec -T airflow-webserver airflow dags trigger etl_pipeline --conf '{"full_refresh": true}'
```
Проверить доступы:
- Airflow: `http://localhost:8080` (`admin/admin`)
- Kafka UI: `http://localhost:8082`
- ClickHouse Play: `http://localhost:9123/play`
- Grafana: `http://localhost:3000`
- Superset: `http://localhost:8088`
---
## 1) Сценарий на 5 минут (тайминг + реплики)
### 0:000:30 — Контекст
Что открыть:
- README/схему архитектуры или короткий слайд.
Что сказать:
- «Это мини-DWH кликстрима: Kafka + ClickHouse + Airflow + Superset + Prometheus/Grafana.»
- «Поток: JSONL -> Kafka -> STG -> ODS -> DDS -> DM-витрины.»
- «Ключевая цель: быстрый повторяемый прогон и устойчивость к грязным данным.»
### 0:30–1:20 — Оркестрация в Airflow
Что открыть:
- Airflow UI, DAG-и `ddl_init`, `kafka_load`, `etl_pipeline`.
Что сказать:
- «`ddl_init` создаёт DDL, `kafka_load` грузит данные в Kafka, `etl_pipeline` считает слои.»
- «Запуск ручной, параметры прозрачные: `limit`, `reset_topics`, `full_refresh`
### 1:202:10 — Ingest через Kafka
Что открыть:
- Kafka UI (топики/сообщения), затем ClickHouse STG.
Что сказать:
- «Одна строка входа = одно сообщение Kafka.»
- «В STG храним сырой JSON без потери данных, типизация делается позже в ODS.»
### 2:10–3:20 — Проверка результата в ClickHouse
Что открыть:
- ClickHouse Play и выполнить запросы ниже.
Что сказать:
- «Показываю факт прохождения по слоям и готовые витрины для аналитики.»
```sql
SELECT count() AS rows FROM ods.browser_event;
SELECT count() AS rows FROM dds.event;
SELECT count() AS rows FROM dds.click;
SELECT * FROM dm.v_daily_traffic ORDER BY event_date DESC LIMIT 10;
SELECT * FROM dm.v_utm_effectiveness ORDER BY clicks DESC LIMIT 10;
```
### 3:20–4:10 — Качество данных и устойчивость
Что открыть:
- `dm.dq_summary` и/или `ods.*_errors`.
Что сказать:
- «Грязные записи не валят пайплайн: ошибки фиксируются в ODS и отражаются в DQ summary.»
- «Это важнее “идеально чистого” датасета, потому что поведение ближе к прод-среде.»
```sql
SELECT * FROM dm.dq_summary ORDER BY layer, table_name, check_name LIMIT 20;
```
### 4:10–5:00 — Мониторинг и BI
Что открыть:
- Grafana (overview-дашборд) и Superset (одна витрина/чарт).
Что сказать:
- «Есть observability: метрики по ClickHouse/Kafka/Airflow и алерты.»
- «Есть BI-слой: витрины готовы для первичного анализа без ручных выгрузок.»
---
## 2) План Б, если UI тормозит
Показать то же самое через CLI:
```bash
docker compose ps
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 --query "SELECT count() FROM dds.event"
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 --query "SELECT * FROM dm.dq_summary LIMIT 10"
curl -s http://localhost:9090/api/v1/targets | grep -o '"health":"[^"]*"'
```
Короткая реплика:
- «Даже без UI видно, что pipeline отработал, витрины заполнены, мониторинг жив.»
---
## 3) Финальная фраза (15 секунд)
- «Проект показывает полный цикл DE-задачи: инфраструктура, ingestion, слои данных, DQ, витрины и мониторинг.»
- «Если нужно, могу углубиться в любой блок: DAG, SQL-трансформации, модель данных или алерты.»