Недоступность сервиса api.mindbox.ru для 100% клиентов в течение 32 минут
Incident Report for Mindbox
Postmortem

8 февраля с 12:23 до 12:55 (мск) для 100% клиентов наблюдалась недоступность сервиса api.mindbox.ru.

Корневая причина недоступности — ошибка при обновлении внутреннего сервиса, необходимого для работы синхронного и асинхронного API.

Влияние на клиента

С 12:23 до 12:48 (мск) для 100% клиентов заканчивались ошибками 4хх и 5хх все синхронные вызовы к api.mindbox.ru. Для 1% клиентов недоступность продолжалась до 13:47 (мск).

С 12:43 до 12:55 (мск) для 100% клиентов все асинхронные вызовы API заканчивались ошибками 4хх.

Как выявляли и устраняли инцидент

  • 12:23 – завершена выкладка новой версии сервиса точек интеграций. Начались нарушения работы синхронного API
  • 12:29 – сработал мониторинг, дежурные инженеры подключились к диагностике проблемы
  • 12:43 – начат откат версии сервиса точек интеграции. Начались нарушения работы асинхронного API
  • 12:46 – начат откат версии сервис асинхронного API
  • 12:48 – работа синхронного API восстановлена для 99% клиентов
  • 12:55 – работа асинхронного API восстановлена
  • 13:15 – попытка сбросить кэш точек интеграций в синхронном API для устранения проблем оставшихся 1% клиентов
  • 13:44 – начата перевыкладка кода синхронного API 
  • 13:47 – работа синхронного API полностью восстановлена

Отчёт

Мы обеспечиваем защиту API от неавторизованного доступа и гибкую настройку механик благодаря точкам интеграции. Через них проходят все запросы к асинхронному и синхронному API. Для проверки подлинности каждого запроса мы сверяем точку и секретный ключ. При обнаружении несоответствия операция не выполняется и отправляется сообщение об ошибке. 

Сервис точек интеграции в нашей архитектуре изолирован и большинство обновлений не затрагивает его производительность. С другой стороны, изменения в нём требуют скоординированных обновлений во всех компонентах API. В ходе оптимизации асинхронного API мы обновили контракт сервиса точек интеграции, который также используется для синхронного API. 

Процесс обновления состоит из создания новой версии контракта, перехода всех сервисов на неё и последующее удаление старой версии. При выполнении алгоритма не было учтено использование устаревшего контракта другими сервисами и следовательно невозможность удаления версии. Это привело к сбою взаимодействия синхронного API.

Новая версия асинхронного API могла функционировать только с обновленным контрактом сервиса точек интеграции, что вызвало его недоступность до завершения откатов старых версий сервисов. За время инцидента 1% клиентов успел закешировать невалидные данные точек интеграции. Попытка очистить кэш перезапуском работающей версии синхронного API не помогла, поэтому была выполнена выкладка предыдущей версии кода.

Что улучшим

  • Улучшим механизм кэширования, чтобы невалидные данные не кэшировались. Это уменьшит время недоступности при возможной ошибке - март 2024.
  • Добавим автоматический откат изменений в точки интеграции, если критичные сервисы перестают работать с новой версией. Это уменьшит время недоступности при возможной ошибке – март 2024
  • Выделим маленькую группу клиентов API в отдельное окружение, на котором будут проверяться все изменения. Это значительно снизит количество потенциально пострадавших клиентов — 4 квартал 2024
Posted Feb 29, 2024 - 10:48 UTC

Resolved
С 12:24 до 12:50 (мск) завершались с ошибкой синхронные запросы для 100% клиентов.
С 12:46 до 12:55 (мск) до 25% асинхронных запросов не ставились в очередь обработки.

С 12:55 (мск) массовых нарушений в работе сервисов нет. Вернемся с детальным разбором ситуации и следующими шагами в течение трёх недель
Posted Feb 08, 2024 - 13:46 UTC
Monitoring
Недоступность была связана с некорректной работой одного из технологических сервисов после обновления его версии. Дежурная команда вернула прежнюю версию.

Сейчас все сервисы работают штатно, мы продолжаем наблюдать за работоспособностью системы. Вернемся с обновлением в течение дня.
Posted Feb 08, 2024 - 09:53 UTC
Investigating
С 12:24 (мск) наблюдается недоступность сервиса процессинга для 100% клиентов.

Инцидент находится в работе у дежурной команды, вернемся со статусом в течение часа.
Posted Feb 08, 2024 - 09:39 UTC
This incident affected: Процессинг, Рекомендации на сайте, and Персонализация сайта.