- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
3.3 KiB
3.3 KiB
✨ Считать вызовы, отказы и длительность по каждому внешнему сервису
- Тип: 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, здесь метрики сервисные.