Короткий ответ
Рассинхронизацию версий API диагностируют по логам ошибок десериализации/валидации, коррелируя их с версией клиента и с историей изменений контракта по времени, чтобы найти клиентов, которые не обновились после breaking change.
Как это работает подробнее
Если сервис выпустил несовместимое изменение контракта без должного версионирования, старые клиенты продолжают отправлять/ожидать старый формат и начинают получать ошибки парсинга или некорректное поведение.
Пример кода
Схема
Лог ошибки на клиенте (старая версия 2.3.0):
KeyError: 'status' -- поле было переименовано в 'state' в релизе сервера от 2024-05-10
Метрика: error_rate по эндпоинту /v1/orders резко выросла сразу после деплоя релиза r482Что использовать на практике
- Практика. Смотрят метрики ошибок по эндпоинту в разрезе версии клиента, ищут всплеск, совпадающий по времени с последним деплоем, и проверяют changelog схемы API за релиз; решение — откатить изменение или временно восстановить обратную совместимость.
Подводные камни
- Риск. Деплоить breaking change без поэтапного раскатывания (canary), из-за чего проблема сразу затрагивает 100% трафика; не версионировать внутренние API между своими сервисами.