docs: приёмка этапа 2 и порог, который оказался гигиеной #67

Merged
ddmitry merged 2 commits from docs/priyomka-etapa-2 into main 2026-08-07 20:56:36 +03:00
2 changed files with 21 additions and 8 deletions
Showing only changes of commit 6f5f76fafb - Show all commits
+13 -4
View File
@@ -30,8 +30,8 @@
## Карта целей ## Карта целей
Стенд нужен трём целям из семи. Цена — замер, см. «Что проверено»: `make test`, Стенд нужен трём целям из семи. Цена — замер, см. «Что проверено»: `make test`,
`make smoke` и `make check-clickhouse` перемерены 7 августа 2026 года, их #42 `make smoke`, `make check-clickhouse` и `make check-services` перемерены
менял; остальные три стоят с замера 6 августа. 7 августа 2026 года на приёмке этапа 2; остальные три стоят с замера 6 августа.
| Цель | Что утверждает | Стенд | Цена | | Цель | Что утверждает | Стенд | Цена |
|---|---|---|---| |---|---|---|---|
@@ -41,7 +41,7 @@
| `make config-test` | Compose разбирается, файлы DAG синтаксически целы, в diff нет пробельных ошибок. О работоспособности не говорит ничего | не нужен | 1 с | | `make config-test` | Compose разбирается, файлы DAG синтаксически целы, в diff нет пробельных ошибок. О работоспособности не говорит ничего | не нужен | 1 с |
| `make smoke` | Стенд **собран**: службы живы, порты отвечают, подключения настроены друг на друга. Вширь и по касательной к каждой службе. Единственная цель, которая здесь правда смоук | нужен | 9 с | | `make smoke` | Стенд **собран**: службы живы, порты отвечают, подключения настроены друг на друга. Вширь и по касательной к каждой службе. Единственная цель, которая здесь правда смоук | нужен | 9 с |
| `make check-clickhouse` | Всё, что спрашивают **у ClickHouse** и он отвечает сам: макросы, шарды, реплики, путь в keeper, ключ шардирования, очередь распределённых DDL, счёт событий стартового мира против описи | нужен | 8 с | | `make check-clickhouse` | Всё, что спрашивают **у ClickHouse** и он отвечает сам: макросы, шарды, реплики, путь в keeper, ключ шардирования, очередь распределённых DDL, счёт событий стартового мира против описи | нужен | 8 с |
| `make check-services` | **Службы работают**: DAG запускается и доходит, топик создаётся и удаляется, Superset логинится и ходит в базу | нужен | 44 с | | `make check-services` | **Службы работают**: DAG запускается и доходит, топик создаётся и удаляется, Superset логинится и ходит в базу | нужен | 59 с |
Цена самого `make up` — 2 м 50 с с нуля (`make clean` перед ним — ещё 23 с) и Цена самого `make up` — 2 м 50 с с нуля (`make clean` перед ним — ещё 23 с) и
1 м 5 с на живом стенде. В цену целей она не входит, но записана здесь по той 1 м 5 с на живом стенде. В цену целей она не входит, но записана здесь по той
@@ -218,6 +218,15 @@ Kafka → STG → ODS, и живёт он в `make check-clickhouse`.
смоук дал 8 секунд дважды (без проверки Kafka, до её появления, — 5 и 6), смоук дал 8 секунд дважды (без проверки Kafka, до её появления, — 5 и 6),
`check-services` — 43 и 44. В таблице стоит большее из замеренных. `check-services` — 43 и 44. В таблице стоит большее из замеренных.
Перемер 7 августа 2026 года — приёмка этапа 2 целиком: `make clean` и `make up`
подряд заняли 2 м 58 с и залили стартовый мир, дальше по порядку все три цели
на стенде и три без него. Смоук дал 9 секунд, `check-clickhouse` — 8,
`make test` — 71. `check-services` — 59 и 48; в таблицу по прежнему правилу
пошло большее. Против 44 секунд накануне цель подорожала, и причину назвать
нечем: между замерами и стартовый мир в хранилище, и холодный подъём перед
первым прогоном. Число здесь — замер с датой, а не бюджет, и повод разбираться
появится, когда за него кто-нибудь начнёт держаться.
До деления `scripts/stand-smoke.sh` шёл 48 секунд на 25 проверок, из них До деления `scripts/stand-smoke.sh` шёл 48 секунд на 25 проверок, из них
42 секунды съедали шесть: Kafka с машины, два запуска пробников Airflow и три 42 секунды съедали шесть: Kafka с машины, два запуска пробников Airflow и три
проверки Superset. После деления те же 25 проверок разошлись по двум целям: проверки Superset. После деления те же 25 проверок разошлись по двум целям:
@@ -229,7 +238,7 @@ Superset, Prometheus и Grafana смоук стучится с машины в
про Kafka после переезда знал только «контейнер здоров» — а это вердикт про Kafka после переезда знал только «контейнер здоров» — а это вердикт
проверки состояния из `compose.yaml`, и та спрашивает брокер изнутри по проверки состояния из `compose.yaml`, и та спрашивает брокер изнутри по
внутреннему слушателю. Внешняя дверь оставалась непроверенной до внутреннему слушателю. Внешняя дверь оставалась непроверенной до
`check-services` с его 44 секундами, хотя генератор пишет в Kafka именно с `check-services` с его минутой, хотя генератор пишет в Kafka именно с
машины. Стоит проверка 2,6 секунды, и почти всё это — старт JVM в разовом машины. Стоит проверка 2,6 секунды, и почти всё это — старт JVM в разовом
контейнере; ожидание ответа ограничено пятнадцатью секундами, впятеро больше контейнере; ожидание ответа ограничено пятнадцатью секундами, впятеро больше
замеренного. замеренного.
+8 -4
View File
@@ -590,12 +590,16 @@ v2 стартует пустым, поэтому объём ниже — это
хранилища](../architecture/storage.md), раздел «Что проверено»; запасной хранилища](../architecture/storage.md), раздел «Что проверено»; запасной
именованный кортеж — там же в [ADR 0005](../adr/0005-event-ingestion.md). именованный кортеж — там же в [ADR 0005](../adr/0005-event-ingestion.md).
Kafka Engine на двух нодах снят с этого списка при приёмке этапа 2 (7 августа
2026 года) — проверенным наполовину и осознанно. Что обе ноды читают топик и
обе партиции доезжают, показал #37. Дубли и раскладку партиций между прогонами
решено не проверять: дубль здесь возможен по устройству движка, окно названо и
разобрано в [доке хранилища](../architecture/storage.md), а в ODS его схлопывает
`ReplacingMergeTree`. Проверять то, что заведомо случается и заведомо
обезврежено, — работа без ответа на конце.
- Поведение соединения двух Distributed-таблиц и `distributed_product_mode` - Поведение соединения двух Distributed-таблиц и `distributed_product_mode`
эмпирически на стенде (хвост #14). эмпирически на стенде (хвост #14).
- Kafka Engine на двух нодах в одной consumer group: ребаланс партиций между
прогонами, отсутствие дублей при штатной работе. Закрыто пока наполовину: что
обе ноды читают топик и обе партиции доезжают, показал #37; что дублей нет и
как раскладка меняется между прогонами — нет.
- Размер артефакта эталонного мира после пересборки. - Размер артефакта эталонного мира после пересборки.
- Спорные API (Airflow Datasets/сенсоры, ClickHouse DDL) — перед кодом - Спорные API (Airflow Datasets/сенсоры, ClickHouse DDL) — перед кодом
сверять через MCP Context7 (правило AGENTS.md). сверять через MCP Context7 (правило AGENTS.md).