tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# ✨ Считать вызовы, отказы и длительность по каждому внешнему сервису
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Очередь — Метрики внешних сервисов пишутся в выбранном словаре, а не переписываются потом.
|
||||
- **Зачем:** Ни у Telegram, ни у Object Storage, ни у SpeechKit нет ни одной метрики: отказ внешнего сервиса виден только строкой в журнале контейнера.
|
||||
- **Теги:** goal:service-observability
|
||||
|
||||
Двигает пункты 2 и 5 «Завершения» цели: у каждого внешнего сервиса появляются
|
||||
вызовы, отказы и длительность, а расход на платные сервисы виден числом.
|
||||
|
||||
Внешних сервисов сегодня четыре — Telegram, Object Storage, SpeechKit и
|
||||
`ffmpeg`/`ffprobe` как внешний процесс; пятым станет языковая модель. Метрика
|
||||
заводится одной формой на все, чтобы шестой сервис не приносил шестого способа
|
||||
считать.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- `internal/metrics` — форма метрики внешнего вызова: имя сервиса, операция,
|
||||
исход, гистограмма длительности;
|
||||
- адаптеры `internal/adapter/*` — место, где вызов оборачивается замером;
|
||||
- `docs/architecture.md`, раздел эксплуатации — перечень метрик;
|
||||
- `docs/conventions/` — правило: новый внешний вызов приходит со своей меткой,
|
||||
а не со своей метрикой.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- У каждого из четырёх внешних сервисов есть счётчик вызовов, счётчик отказов и
|
||||
гистограмма длительности. Оракул — тест: прогнать по одному вызову каждого
|
||||
адаптера с подставным собеседником и снять `/metrics`.
|
||||
- Отказ внешнего сервиса виден отдельно от успеха и не теряется в общем счётчике.
|
||||
Оракул — тест: подставной собеседник отвечает отказом, метка исхода в метрике
|
||||
отличается.
|
||||
- Минуты распознавания и объём заливки видны числом. Оракул — тест: после шага
|
||||
распознавания счётчик минут вырос на длительность записи, а после заливки в
|
||||
Object Storage счётчик объёма — на размер файла.
|
||||
|
||||
## Рамки
|
||||
|
||||
Трассировку здесь не заводим — чем развивать наблюдаемость, решает разведка
|
||||
`opentelemetry-fit`; эта задача остаётся в том словаре, который она выберет.
|
||||
Учёт по пользователям — задача `usage-accounting`, здесь метрики сервисные.
|
||||
Reference in New Issue
Block a user