Ответ вслух Middle Инциденты, on-call и постмортемы обновлено

Алерт в 3 ночи: растёт очередь

Вопрос

Интервьюер: «Ночью алерт: лаг консьюмеров Kafka в сервисе уведомлений растёт, уже 2 миллиона сообщений, пользователи получают SMS с опозданием на час. Ваши действия?»

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала влияние: лаг растёт на всех партициях топика sms, задержка доставки около часа, это бьёт по входу через одноразовые коды, значит SEV2. Смотрю консьюмеров: живы, но обработка одного сообщения выросла с 50 мс до 3 секунд, трейсы показывают ожидание ответа SMS-провайдера.

Что должно прозвучать в ответе

  • Оценить влияние и тренд: растёт ли лаг, какие топики и партиции

  • Проверить консьюмеров: живы ли, нет ли перезапусков и ошибок обработки

  • Найти узкое место: внешний SMS-провайдер, база, ядовитое сообщение

  • Смягчить: масштабировать консьюмеров в пределах числа партиций, пропустить ядовитое сообщение в DLQ, включить резервного провайдера

  • Решить, что делать с устаревшими сообщениями (одноразовые коды уже бессмысленны)

  • Постмортем: алерт на лаг во времени, а не в штуках, лимиты и ретраи

Что могут спросить следом

  • Почему добавление консьюмеров может не помочь?
  • Что делать с сообщениями, которые обрабатываются бесконечно?

Разбор

Образцовый ответ: «Сначала влияние: лаг растёт на всех партициях топика sms, задержка доставки около часа, это бьёт по входу через одноразовые коды, значит SEV2. Смотрю консьюмеров: живы, но обработка одного сообщения выросла с 50 мс до 3 секунд, трейсы показывают ожидание ответа SMS-провайдера. То есть узкое место внешний API. Включаю резервного провайдера, если он есть, и проверяю, что обработка ускорилась. Добавлять консьюмеров имеет смысл только до числа партиций и только если упираемся в нас, а не в провайдера, иначе мы его ещё и задавим. Одноразовые коды старше 10 минут бессмысленны, их логичнее пропустить, это решение согласую. Если бы одна партиция стояла, искал бы ядовитое сообщение и отправлял бы его в DLQ. В постмортем: алерт на лаг в секундах, таймауты и автоматическое переключение провайдера».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.