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:
@@ -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:00–0: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:20–2: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-трансформации, модель данных или алерты.»
|
||||||
Reference in New Issue
Block a user