docs: приёмка этапа 2 и порог, который оказался гигиеной #67
@@ -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 в разовом
|
||||||
контейнере; ожидание ответа ограничено пятнадцатью секундами, впятеро больше
|
контейнере; ожидание ответа ограничено пятнадцатью секундами, впятеро больше
|
||||||
замеренного.
|
замеренного.
|
||||||
|
|||||||
@@ -548,13 +548,13 @@ v2 стартует пустым, поэтому объём ниже — это
|
|||||||
9. Мониторинг и runbook «keeper упал / DDL повис в очереди». Состав дашбордов
|
9. Мониторинг и runbook «keeper упал / DDL повис в очереди». Состав дашбордов
|
||||||
и границы — ADR 0002.
|
и границы — ADR 0002.
|
||||||
|
|
||||||
Критерий приёмки этапа — честный: `make up` работает и проходят все три
|
Что гонять на приёмке этапа — строка в [карте
|
||||||
проверки на стенде — `make smoke`, `make check-clickhouse` и
|
проверок](../architecture/testing.md), раздел «Какую проверку когда
|
||||||
`make check-services`, — а не «дашборд зелёный». Названы они поимённо
|
запускать»: стенд собирается с нуля и на нём зелены все три цели, которым
|
||||||
намеренно: под общим словом «smoke-проверки» планка тихо опустилась бы при
|
нужен стенд. Это гигиена, а не приёмка: она обещает, что этап не сломал стенд,
|
||||||
следующем делении целей. Это минимальная планка; свои
|
и молчит о его предмете — дашборд может быть не нарисован, а все три останутся
|
||||||
наблюдаемые критерии каждый этап получает при разбиении в /to-tickets. Документация правится в PR этапа
|
зелёными. Свои наблюдаемые критерии каждый этап получает при разбиении в
|
||||||
(правило AGENTS.md).
|
/to-tickets. Документация правится в PR этапа (правило AGENTS.md).
|
||||||
|
|
||||||
## 10. Границы: чего не делаем
|
## 10. Границы: чего не делаем
|
||||||
|
|
||||||
@@ -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).
|
||||||
|
|||||||
Reference in New Issue
Block a user