Ошибка Mandrill в «Юздеске»: история сбоя 4–5 февраля 2019 года

В понедельник утром в мониторинге «Юздеска» появился алерт о том, что уже несколько минут в таблице новых тикетов не появляются новые письма. Иногда такие алерты приходят ночью, когда активность клиентов наших клиентов не очень высокая. Утренний алерт показался странным, потом пришел еще один и стало понятно, что что-то случилось.

У Юздеска есть две схемы подключения почты: пересылка и подключение по IMAP. Со вторым методом все понятно — мы напрямую забираем все новые непрочитанные письма из подключенных ящиков. Первый — пересылка — нужен когда по какой-то причине подключиться к ящику напрямую нельзя: политика безопасности, недоступность почтового сервера извне, специфический протокол и т.д.

Для сбора почты по пересылке мы используем внешний сервис — Mandrill. Эта платформа является техническим бэкендом MailChimp, одного из крупнейших мировых сервисов почтовых рассылок. Стабильность Mandrill всегда была на уровне 99.99% (много девяток). Небольшие сбои чинились за пару минут и все сообщения за периоды простоя приходили в течение нескольких следующих минут.

Время этого сбоя совпало с поздней ночью в офисе Mandrill в Атланте. Каково же было наше, а позднее не только наше удивление, что ни саппорт, ни девопсы компании не проснулись. О проблеме им стало известно только утром в начале их рабочего дня, о чем свидетельствует твиттер аккаунт.

Поддержка действовала крайне непрофессионально: обновления публиковались раз в несколько часов и не содержали деталей происходящего. Сравните с ответом их же коллеги из Mailchimp. Кто-то в комментариях спрашивал фотографию команды девопсов, которые ночью разбираются в проблеме. Фотография не последовала.

Ситуация в Mandrill нормализовалась только спустя почти трое суток. Мы столько ждать не могли. Проблемы с нашими внутренними схемами и технологическими провайдерами не должны волновать наших клиентов.

Мы сразу стали предлагать переключение на IMAP. Те клиенты, у которых такое подключение было сразу вообще не почувствовали проблем, но перейти смогли не все. Мы почти целый день ждали решения проблемы у провайдера и попросили какое-то время, пока ситуация не наладится, поработать в почтовике.

Почтовые сервера в интернете работают через специальные MX записи в DNS доменных имен. DNS указывает вашему браузеру к какому серверу пойти, когда вы пишите тот или иной URL в адресной строке или кликаете на результаты поиска в Гугле. MX запись указывает на сервера, которые должны получить письмо, отправленное на какой-либо адрес на каком-либо домене. Письма на @usedesk.ru приходят на адреса Яндекс.Почты, а письма на @inbound.usedesk.ru указывали на Mandrill, который возвращал их нам, так и работала пересылка. Особенность заключается в том, что для одного домена может быть только один провайдер и запустить частичную резервную схему с тем же самым доменом невозможно.

Спустя день стало понятно, что ничего хорошего в ближайшее время ждать не стоит и мы начали работать над подключением альтернативного провайдера. Мы не делали этого раньше, потому что Mandrill довольно плотно сидит в архитектуре Юздеска и смена провайдера в нормальном режиме заняла бы пару недель разработки. Но режим был не нормальным. В общей сложности разработчикам понадобилось 10 часов на интеграцию нового провайдера, тестирование и доставку до всех продакшен серверов. Все другие задачи были отложены.

К концу вторника 5 февраля мы переключили провайдера, поправили ошибки пойманные уже в продакшене и первый раз за 2 дня пошли спать. Теперь мы можем переключаться между почтовыми провайдерами в течение 5 минут, даже во сне.

Заключение

P.S. Если вы не были клиентом Юздеска в эти дни, то можете посмотреть в телеграм канале подробный таймлайн ситуации и ее решения. Я не могу обещать, что у нас больше никогда не случится подобного сбоя, но могу обещать максимально быстрой реакции и честного подробного рассказа о происходящем без скрытия фактов инцидентов со стороны нашей команды.Приношу извинения всем нашим клиентам, которые столкнулись со сложностям в обслуживании своих клиентов.

P.S.S. Прочитать что в итоге случилось у ребят можно в их письме. Что-то там с базой данных Postgres и уход в read-only mode.

88
Начать дискуссию