Переезд на новый SMS-шлюз без остановки уведомлений

1 мин
Время чтения

Переезд на новый SMS-шлюз — это миграция производственного канала, а не простая замена URL и API-ключа. У провайдеров отличаются статусы, ограничения скорости, правила Sender ID, формат ошибок, callbacks и работа с длинными сообщениями. Без поэтапного плана можно получить дубли, потерянные DLR и незаметное ухудшение скорости.

Безопасная миграция строится вокруг адаптера, параллельного тестирования, небольшого первого трафика и готового отката. Сначала важно понять, как устроен SMS-шлюз, а затем отделить его контракт от бизнес-систем компании.

Инвентаризация перед миграцией

Соберите все точки отправки, а не только основную CRM. SMS могут уходить из сайта, приложения, 1С, службы поддержки, планировщика и аварийного скрипта. Для каждого сценария зафиксируйте:

  • владельца и назначение;
  • тип трафика и приоритет;
  • объём и пики;
  • Sender ID и шаблоны;
  • маршрут и операторы;
  • срок жизни сообщения;
  • формат номера и кодировку;
  • текущие DLR и бизнес-реакции;
  • требования к скорости и стоимости.

Инвентаризация часто находит старые прямые интеграции, которые не попадут под общее переключение. Их либо включают в проект, либо осознанно оставляют с датой последующей миграции.

Слой адаптера

Бизнес-система не должна знать внутренние названия ошибок каждого провайдера. Введите собственный стабильный контракт: отправить сообщение, получить client message ID, нормализовать ответ и принять единый набор статусов.

Адаптер нового шлюза переводит этот контракт в его API. Благодаря этому миграция не требует менять все CRM и приложения. Рядом остаётся адаптер старого маршрута, что даёт быстрый откат.

Единый контракт включает идемпотентный ключ, тип трафика, шаблон, TTL и correlation ID. Не ограничивайтесь полями «номер» и «текст»: иначе важная логика снова окажется спрятана внутри конкретного провайдера.

Сопоставление возможностей

Сделайте таблицу различий:

  • авторизация и управление ключами;
  • лимиты запросов и сообщения в секунду;
  • синхронные коды ошибок;
  • поддержка client message ID;
  • формат и подпись webhook;
  • словарь DLR;
  • validity period;
  • Sender ID и согласование шаблонов;
  • тарификация сегментов;
  • инструменты тестирования и поддержки.

Если новая система не поддерживает привычную функцию, решение принимают до переключения. Например, отсутствие поиска по client ID усложняет обработку таймаута, а другой набор DLR требует обновить маппинг.

Тестовый контур

Начните с контролируемых номеров основных операторов. Проверьте кириллицу, латиницу, длинное SMS, переменные шаблона, Sender ID, неверный номер, таймаут, лимит частоты и финальные статусы. Отдельно убедитесь, что webhook для DLR проверяет подпись и переживает повтор события.

Сравнивайте не только «пришло или нет». Измерьте число сегментов, время до принятия API, время до DLR, исходные и нормализованные коды. Сохраните message ID для обращения в поддержку нового провайдера.

Нагрузку сначала эмулируют без реальных отправок, а небольшой реальный поток запускают только на разрешённые номера. Методика описана в статье про нагрузочное тестирование SMS.

Shadow и canary без дублей

Shadow-режим не должен отправлять одно SMS через два шлюза. Новый адаптер может параллельно валидировать запрос, рассчитывать маршрут и записывать предполагаемый результат без внешнего вызова. Так проверяются совместимость данных и объёмы.

Затем включают canary: небольшую устойчивую долю реальных сообщений направляют только в новый шлюз. Группу выбирают детерминированно, например по хешу внутреннего ID, чтобы один клиент не прыгал между маршрутами при каждом запросе.

Критичные OTP не обязательно брать первыми. Начните со сценария с понятным TTL, небольшим риском и достаточным объёмом для измерения. После стабильности переходите к следующему классу.

Метрики принятия решения

Старый и новый маршруты сравнивают в одинаковых временных окнах и по одинаковым сценариям:

  • доля приёма с первой попытки;
  • частота 4xx, 429, 5xx и таймаутов;
  • p50/p95 времени до DLR;
  • доля финальных доставок и просрочек;
  • неизвестные коды статусов;
  • обращения пользователей;
  • число сегментов и стоимость;
  • работа по операторам и Sender ID.

Методика расчёта задержки разобрана в статье про скорость доставки SMS. Не объявляйте победителя после нескольких ручных сообщений: нужна достаточная выборка и несколько периодов нагрузки.

Постепенное переключение

Увеличивайте долю ступенями и выдерживайте каждую до получения финальных DLR. Например, малый canary, затем ограниченная часть обычного сервисного трафика, затем весь класс. Массовые кампании и критичные сообщения переключаются отдельными решениями.

На каждом шаге есть автоматические стоп-условия: рост ошибок, нарушение SLO, неизвестные статусы, конфликт Sender ID или увеличение стоимости сверх порога. При срабатывании новая доля не растёт, а маршрут откатывается для ещё не отправленных задач.

Откат

Откат должен быть подготовлен до первого production-сообщения. Старые ключи, callback и мониторинг сохраняются на период миграции. Конфигурационный флаг позволяет вернуть новые задачи, не выпуская код.

Уже принятые новым шлюзом сообщения не отправляют повторно через старый. Их статусы продолжают обрабатываться до финала. В журнале у каждой операции остаётся фактический провайдер, поэтому callbacks двух систем не смешиваются.

Если деградация затронула часть трафика, применяйте план из статьи про сбой SMS-провайдера, а не массовую ручную переотправку.

Завершение миграции

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

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

Данные и договорные ограничения

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

Согласуйте формат отчётов, сроки поддержки, порядок эскалации и доступ к деталям доставки. Эти свойства трудно оценить по единичному тестовому SMS, поэтому включите их в критерии приёмки рядом со скоростью и ценой.

Чек-лист готовности к 100%

Перед полным переключением подтвердите: все сценарии найдены; Sender ID активны; статусы сопоставлены; webhook проверяет источник; лимиты и бюджеты настроены; canary прошёл на основных операторах; поддержка получила инструкцию; откат выполняется без релиза; старый маршрут продолжает принимать поздние DLR.

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

Первый расчёт после миграции

Сверьте количество бизнес-операций, вызовов API, message ID, DLR и строк тарификации. Несоответствие может показать дубли, потерянные callbacks или прямой источник, который остался на старом маршруте.

Сравнение проводят несколько раз: сразу после canary, после полного дня и после закрытия окна поздних статусов. Только затем старую интеграцию можно считать действительно неиспользуемой.

Итог

Миграция без остановки возможна, когда шлюз скрыт за стабильным внутренним контрактом, различия провайдеров описаны, callbacks и статусы нормализованы, а трафик переключается малыми измеряемыми ступенями. Готовый откат и запрет двойной отправки делают переход управляемым — пользователи не замечают смены инфраструктуры, а команда видит её по фактам и метрикам.

Обновлено 2 сентября, 2026
Подходит каждому
SMS-рассылка для любой сферы бизнеса
Узнайте как внедрить SMS-рассылку в ваш бизнес вместе с quicktel
Оставьте номер и вам перезвонит менеджер.