Что на самом деле делает SMS шлюз
MS шлюз — это мост между приложением и мобильными сетями, передающими текстовые сообщения. Ваше программное обеспечение использует веб-протоколы и структурированные данные; операторы используют сигнальные протоколы, разработанные для телекоммуникаций. Шлюз осуществляет преобразование между ними — принимает сообщение от вашей системы, форматирует его для целевой сети, отправляет по правильному маршруту и возвращает ответ сети, чтобы вы знали, что произошло.
За этим переводом скрывается удивительно много сложностей: проверка и форматирование чисел в соответствии со стандартом E.164, обработка кодировок символов (7-битный GSM против UCS-2 для нелатинских алфавитов), сегментация сообщений для длинных текстов, правила идентификации отправителя, которые различаются в зависимости от страны, и обратный путь для подтверждения доставки. Хороший шлюз делает все это предсказуемым. Слабый же раскрывает вам всю сложность в виде неудачных отправок и скрытых потерь.
SMPP -привязки против HTTP API
Существует два распространенных способа подключения. Первый — это SMPP (Short Message Peer-to-Peer), протокол, используемый самими операторами. Вы открываете постоянную TCP-сессию — «привязку» — в качестве передатчика, приемника или трансивера и передаете сообщения по ней. SMPP эффективен при больших объемах данных, обеспечивает точный контроль над параметрами сообщений и доставляет подтверждения асинхронно в рамках одной и той же сессии. Это правильный выбор, когда вы отправляете данные непрерывно в больших масштабах и хотите минимизировать накладные расходы на каждое сообщение.
Второй вариант — это HTTP / REST API. Вы отправляете сообщение в виде простого HTTPS запроса и получаете JSON-ответ; подтверждения доставки приходят через веб-хук. REST гораздо проще интегрировать, он подходит для современных стеков и бессерверных функций и не требует длительного соединения. Для большинства типов трафика приложений — одноразовых паролей, уведомлений, оповещений — это прагматичный выбор.
Ни один из протоколов не является универсально лучшим. Команды, отправляющие миллионы сообщений в день, часто используют SMPP для повышения пропускной способности и контроля; команды, быстро внедряющие новые функции, обращаются к REST. Наиболее выгодно иметь оба протокола, чтобы протокол следовал за рабочей нагрузкой, а не наоборот.
Хостинг против выделенного сервера
Размещенный (общий) шлюз означает, что ваш трафик проходит через общую инфраструктуру и маршруты провайдера. Он быстро запускается, не требует планирования мощностей и масштабируется эластично. Для большинства отправителей этого вполне достаточно.
Выделенная сеть обеспечивает изолированную пропускную способность — выделенное соединение SMPP, зарезервированная пропускная способность, иногда выделенные маршруты или номера. Она стоит дороже и требует больше времени на развертывание, но защищает от помех со стороны «соседей», делает пропускную способность предсказуемой и часто необходима для регулируемых или высокозащищенных рабочих нагрузок. Решение сводится к объему, предсказуемости и соответствию требованиям, а не к престижу. Выбирайте выделенную сеть, когда действительно важны стабильная TPS и изоляция; в противном случае, размещение на хостинге — более простое решение.
Пропускная способность, TPS и отчёты о доставке.
Пропускная способность обычно указывается в TPS — транзакциях (сообщениях) в секунду. Она наиболее важна, когда всплеск должен быть обработан в узком временном окне: мгновенное оповещение, запланированная кампания, волна кодов авторизации. Показатель TPS в заголовке бессмысленен без двух уточнений: является ли он постоянным или пиковым, и может ли нижестоящий оператор фактически его обработать. Шлюз может принимать от вас 1000 TPS и при этом стоять в очереди за маршрутом, который обрабатывается гораздо медленнее.
Именно здесь и пригодятся уведомления о доставке (DLR). DLR — это подтверждение сетью конечного состояния сообщения: доставлено, не доставлено, истек срок действия или отклонено. Рассматривайте «отправлено» и «доставлено» как разные вещи: отправка означает, что шлюз принял ваш запрос; доставка означает, что устройство его получило. Установите контрольные точки для обоих случаев, согласуйте их и оповестите о расхождении. Когда уведомления о доставке перестают поступать или скорость доставки падает, вы обнаруживаете проблему маршрутизации раньше, чем это сделают ваши пользователи.
Качество маршрутизации и серые маршруты
Главное отличие между шлюзами заключается в маршрутизации — пути, по которому сообщение достигает оператора назначения. Прямые соединения с операторами обеспечивают беспроблемную доставку, надежную обработку идентификаторов отправителя и корректные DLR (Daily Delivery Reduction). Дешевые, косвенные пути — часто называемые «серыми маршрутами» — используют лазейки для снижения затрат. Они выглядят привлекательно, пока операторы их не закроют: сообщения начинают фильтроваться, идентификаторы отправителя перезаписываются, подтверждения становятся ненадежными, а трафик может быть заблокирован без предупреждения.
Для всего, что имеет значение — паролей, уведомлений о транзакциях, уведомлений об учетной записи — качество маршрутизации не является роскошью. Главное — это зона покрытия оператора провайдера. Сеть BroadNet охватывает более 200 стран, и с 2003 года было установлено более 1000 прямых соединений с операторами, и именно этот прямой охват обеспечивает доставку важных сообщений в целости и сохранности.
SLA, безопасность и как оценить поставщика услуг.
Наконец, не ограничивайтесь перечислением функций. В соглашении об SLA должны быть указаны доступность, время отклика и что происходит в случае невыполнения целевых показателей, а не просто обещание «высокой надежности». В отношении безопасности обратите внимание на зашифрованный API трафик, аутентифицированные и IP-ограниченные привязки SMPP, разумное управление учетными данными и четкие правила обработки данных. Спросите, как работает переключение на резервный канал между маршрутами, как провайдер обрабатывает сбои в работе оператора и обеспечивает ли отчетность реальную прозрачность процесса доставки.
Шлюз — это инфраструктура. Оценивайте его так же, как и любую зависимость, от которой опирается ваш продукт: по протоколам, которые он использует, маршрутам, которые он контролирует, возвращаемым отчётам о доставке и гарантиям, которые он предоставляет в письменной форме.
