Исключение логируется, срабатывает оповещение, кто-то это исправляет. Этот цикл работает - для сбоев, достаточно громких, чтобы заявить о себе. Сбои, которые обходятся нашим клиентам в реальные деньги, - тихие: поставщик незаметно сменил ключ SFTP, ночной экспорт создал валидный файл с нулём строк, потребитель очереди «работает», но ничего не обрабатывает.
Ничего не выдало ошибку. Всё просто остановилось.
Метрики потока важнее проверок работоспособности
Проверка работоспособности отвечает на вопрос «процесс жив?». Важен же вопрос «работа была выполнена?». Поэтому основным сигналом для каждой интеграции, которую мы эксплуатируем, служит метрика потока - количество записей за интервал в сравнении с тем, что этот интервал обычно несёт:
- Количество заказов, синхронизируемых в час, с базовыми значениями для будних и выходных дней - тихое воскресенье нормально, тихий вторник в 10:00 - инцидент.
- Поступление файлов как дедлайны, а не события: «файл цен партнёра X должен прийти до 06:30» - оповещение срабатывает, когда файл не приходит.
- Сквозная задержка, измеряемая от временной метки источника до фиксации в приёмнике, а не от момента попадания в очередь.
Проблема нулевых строк
Отдельного упоминания заслуживает самый распространённый тихий сбой, который мы видим: запланированное задание завершается успешно с пустым результатом. Вышестоящая система изменила фильтр, учётные данные потеряли доступ на чтение к одной таблице, ошибка во временном окне даты исключила вообще всё - а задание завершается с кодом 0, всё зелёное.
Каждая выгрузка, которую мы поставляем, несёт в себе порог правдоподобия - минимальный размер результата, который когда-либо был законным для этого задания в данном календарном контексте. Если результат ниже порога, запуск приостанавливается, и человеку задаётся вопрос: «этот запуск дал 0 строк; за последние 90 вторников среднее было 4200 - продолжить?» Один этот страховочный механизм поймал больше реальных инцидентов, чем все наши оповещения об исключениях вместе взятые.
Тишина - это сигнал. Инструментируйте систему под неё осознанно, потому что сама она о себе никогда не заявит.