- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
27 lines
2.1 KiB
Markdown
27 lines
2.1 KiB
Markdown
# 🎯 Состояние сервиса видно без чтения логов
|
|
|
|
- **Тип:** goal
|
|
- **Секция:** Сопровождение — Словарь метрик выбирается разведкой до того, как метрик станет втрое больше; наблюдаем мы, а не пользователь сервиса.
|
|
- **Зачем:** Отказ замечает пользователь, а не владелец: оповещения нет, а путь записи по конвейеру собирается глазами по логам контейнера.
|
|
- **Теги:** decomposed
|
|
|
|
Наблюдаем **мы**, а не пользователь сервиса, — поэтому цель стоит в
|
|
сопровождении, а не среди возможностей приложения. Пользовательская половина
|
|
той же темы живёт отдельно: о готовности своей записи человек узнаёт по цели
|
|
[ready-notification](ready-notification.md).
|
|
|
|
Эндпоинт `/metrics` остаётся и развивается. Чем именно развивать — голым
|
|
`client_golang` или OpenTelemetry с трассировкой — решает разведка
|
|
`opentelemetry-fit`.
|
|
|
|
## Завершение
|
|
|
|
1. По метрикам видно, что конвейер встал: задача висит в состоянии дольше
|
|
обычного, и это отличимо от «работы нет».
|
|
2. Каждый внешний сервис имеет метрику вызовов, отказов и длительности —
|
|
сегодня их нет ни у одного.
|
|
3. Путь одной записи по конвейеру собирается запросом, а не чтением логов
|
|
глазами.
|
|
4. Владелец узнаёт об отказе сам, а не от пользователя.
|
|
5. Стоимость обращений к платным сервисам видна числом.
|