Лучшие статьи и кейсы стартапов
Включить уведомления
Дадим сигнал, когда появится
что-то суперстоящее.
Спасибо, не надо
Вопросы Проекты Вакансии
Универсальный сервис рассылок push-уведомлений для Web и Mobile
Рекомендуем
Продвинуть свой проект
Лучшие проекты за неделю
26
Битрикс24

Битрикс24

www.bitrix24.ru

16
Отследить-посылку

Отследить-посылку

B2B-сервис трекинга посылок

14
myPreza

myPreza

mypreza.ru

13
WebResidentTeam

WebResidentTeam

webresident.agency

12
Perezvoni.com

Perezvoni.com

perezvoni.com

11
Expresso

Expresso

www.expresso.today

10
YAGLA

YAGLA

yagla.ru

10
Reader

Reader

Интернет-журнал о современных технологиях.

Показать следующие
Рейтинг проектов
Подписывайтесь на Спарк в Facebook

Техническая сторона построения мобильных push-бекендов

2 368 0 В избранное Сохранено
Авторизуйтесь
Вход с паролем
Альтернативное название статьи "Зачем нужен Jeapie?"

В этой статье разберемся с техническими проблемами, возникающими при доставке push-уведомлений в режиме реального времени на сотни тысяч и миллионы устройств.
jeapie.png
Этот материал будет полезен техническим специалистам и руководству компаний, которые уже имеют некоторый опыт выпуска продуктов для мобильных платформ. На написание этой статьи нас навели типичные вопросы “технарей”, которые мы слышим практически на каждом мероприятии, а также в комментариях к нашим постам в различных профессиональных сообществах.

Примерно такие:

  • Push - хорошо документированная технология, что мешает нам написать собственный класс на нашем бекенде и не платить за ваше решение?
  • В сети Интернет можно найти много open-source библиотек для разных языков программирования, в которых уже реализована работа с APNS, GCM и так далее;
  • Проблемы доставки push-уведомлений нет. Просто написал цикл по всем идентификаторам устройств, пробежался, разослал и все ок;
  • У нас уже есть свой “велосипед”, написанный для прошлых проектов, почему бы нам просто не скопировать его еще раз?
  • Мы будем платить вам просто за хостинг open-source библиотеки?

Давайте разберемся подробнее.

Проблема 1. Одновременная работа с разными мобильными платформами.

Каждый провайдер уведомлений дает собственный сервис доставки push-уведомлений на устройства. В Android - это GCM (Google Cloud Messaging), в iOS и Mac - APNS (Apple Push Notification service). Для Windows Phone и Windows 8 используются Microsoft Push Notification Service (MPNS) и Windows Notification Service (WNS) соответственно. Для более экзотических устройств типа Blackberry или Samsung SmartTV это также собственные сервисы.

Если, к примеру, у вас уже есть класс на бекенде, который отсылает пуш-уведомления для iOS, то нужно будет вносить дополнительные библитеки для других платформ. Далее придется проводить рефакторинг и создавать дополнительный уровень абстракции (универсальный класс для работы с push-уведомлениями), чтобы постоянно не затрагивать логику работы всего бекенда в целом. Собрать даже из готовых open-source решений такой продукт задача сама по себе довольно трудоемкая, а уж поддерживать, покрывать тестами, отлавливать баги - и вовсе непростая.

Проблема 2. Хранение и использование неоднородных данных пользователей, идентификаторов, локализации.

Каждая платформа поддерживает разные типы идентификаторов устройств, разные форматы данных запроса и ответа сервера. Вам неизбежно придется делать новые и новые слои абстракции для собственного push-решения, к примеру такие:

  • учет локализации (языка уведомления) для пользователей из разных стран;
  • учет часовых поясов и времени доставки уведомлений;
  • учет нескольких устройств на одного пользователя, исключение дублирования уведомлений;
  • шаблонизация уведомлений, выбор из готовых шаблонов;
  • хранение различной персональной информации и классификация пользователей (возраст, пол, поведение в приложении).

Это все неизбежно приведет к росту доли бюджета разработки push-системы внутри общего бюджета на создание и поддержку продукта. Для эффективной работы в режиме реального времени вам прийдется инвестировать существенные ресурсы в разработку относительно простой системы коммуникации с пользователями.

Проблема 3. Масштабирование.

Если даже у вас уже есть свое собственное решение, которое справляется с вышеперечисленными задачами, вы можете также столкнуться с проблемами когда ваше приложение станет успешным. Начиная с порядка в десятки тысяч устройств, на которые вы пожелаете выслать уведомления, простой перебор идентификаторов в цикле уже будет давать задержки, существенно влияющие на опыт использования вашего приложения. Актуальность множества типов push-уведомлений очень ограничена по времени. “Через несколько минут” - это уже не вовремя.
К примеру, один "воркер", отправляющий последовательно уведомления на одну платформу одному миллиону устройств, справится с задачей за 28(!) часов.

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

Как результат: вам прийдется также вынести свои push-сервисы на отдельные сервера и сделать еще один финальный уровень абстракции, чтобы по сути создать отдельный собственный сервис push-уведомлений и работать с ним через API из вашего слоя бизнес-логики.

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

Как Jeapie решает эти задачи?

Продукт Jeapie предлагает вам масштабируемую инфраструктуру для отправки различных типов push-уведомлений, которая поможет вам эффективно направлять кроссплатформенные, персонализированные уведомления миллионам пользователей.

Кроссплатформенность. Всего одним вызовом API Jeapie ваш мобильный бэкенд может отправить одновременные пуш-уведомления пользователям на устройствах Windows Phone 8, iOS, Android и др.

Управление устройствами. Использование Jeapie избавит вас от необходимости необходимости хранить и управлять идентификаторами устройств, которые используются сервисами уведомлений каждой из платформ (APNS, GCM, MPNS и др.). Наш продукт сам безопасно обрабатывает служебные ответы, истечение срока идентификатора устройства и так далее для каждой из платформ.

Сегментация. Мы даем полные возможности управления гибкой системой тегов. Вы можете назначать теги различным девайсам. Эти теги показывают интерес пользователя в уведомлениях или его свойства (возраст, пол, любимый спорт/команда, гео-расположение, биржевой индекс, логический идентификатор пользователя и так далее). Эти теги не нужно обрабатывать повторно или заботиться об их актуальности. Они обеспечивают приложениям очень простой путь для отправки таргетированных уведомлений миллионам устройств с помощью всего лишь одного вызова API, без необходимости для вас создавать свою собственную инфраструктуру маршрутизации уведомлений для каждого устройства.

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

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

Универсальное API. Jeapie может быть легко интегрирован в любой имеющийся серверный бэкенд (Java, .NET, PHP, Python, Ruby или Node.js) c помощью понятного, хорошо документированного RESTful API. В мобильные приложения он интегрируются путем вставки готовых SDK-библиотек. Мы максимально упростили интеграцию Jeapie со сторонними системами и сервисами.

Enterprise поддержка. Наша команда предоставляет полную R&D поддержку и консультирование для высоконагруженных систем с потенциалом роста до сотен тысяч и миллионов подписчиков. Мы сфокусированы на push-уведомлениях уже очень долгое время, так что вы сможете положиться на нашу экспертизу и опыт, чтобы построить изначально устойчивую систему реал-тайм уведомлений для вашего продукта.

Итог. Вданной статье мы постарались показать как такая простая “фишка” приложения как push-уведомления довольно быстро может стать головной болью для любого паблишера, который выпускает успешные приложения.
Также были описаны какие основные задачи с технической стороны решает Jeapie как продукт и с помощью каких инструментов это достигается.
Любые вопросы вы можете оставлять в комментариях или присылать прямо на email
0
Добавить в избранное Сохранено
Авторизуйтесь
Вход с паролем
Комментариев еще не оставлено
Выбрать файл
Читайте далее
Загружаем…
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать