Разработка сервиса push-рассылок для аптечной сети Фармленд

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

Разработка сервиса push-рассылок для аптечной сети Фармленд

Существует несколько способов связи с клиентами:

  1. Электронная почта: Классика. Отправляйте информацию о новинках, акциях и скидках на почту клиентам.
  2. Социальные сети: Публикуйте интересный контент, проводите опросы и отвечайте на вопросы в соцсетях.
  3. SMS: Отправляйте сообщения с напоминаниями, подтверждениями и уведомлениями о скидках.
  4. Мессенджеры: Используйте WhatsApp, Viber и другие для быстрой и прямой связи с клиентами.
Разработка сервиса push-рассылок для аптечной сети Фармленд

Пуш-уведомления же обладают несколькими преимуществами по сравнению с другими способами коммуникации:

  1. Моментальность: Пуш-уведомления доставляются на устройства пользователей мгновенно, что позволяет быстро донести важную информацию.
  2. Прямая связь: Пуш-уведомления позволяют устанавливать прямую связь с каждым пользователем, обходя промежуточные каналы.
  3. Персонализация: С помощью пуш-уведомлений можно предложить персонализированный контент, адаптированный к интересам и предпочтениям каждого конкретного пользователя.
  4. Высокая открываемость: Согласно исследованиям, пуш-уведомления имеют значительно более высокий процент открытия и вовлеченности пользователей, чем электронная почта или SMS.

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

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

Снежана Аюпова - Account-manager Red Promo

Архитектура

Архитектура сервиса пуш-рассылок состоит из серверной и клиентской частей.

  1. Серверная часть (PHP):
  • База данных: Хранение информации о пользователях, устройствах, подписках и пуш-уведомлениях.
  • API: Реализация API для взаимодействия с клиентскими приложениями. Включает методы для регистрации устройств, отправки пуш-уведомлений и управления подписками.
  • Бизнес-логика: Обработка запросов от клиентских приложений, проверка подписок, формирование и отправка пуш-уведомлений.

2. Клиентская часть (Swift и Kotlin):

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

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

Использование микросервисов

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

Кроме того, мы разработали отдельный микросервис для управления пуш-рассылками.

Сервис пуш-рассылок рекомендуется размещать на отдельном сервере по нескольким причинам:

  1. Масштабируемость и производительность: Отдельный сервер позволяет легче масштабировать сервис при увеличении числа пользователей и объема отправляемых уведомлений. Это обеспечивает стабильную производительность и отзывчивость сервиса.
  2. Изоляция: Размещение сервиса пуш-рассылок на отдельном сервере обеспечивает изоляцию его работы от других компонентов системы. Это помогает предотвратить возможные конфликты и перегрузки, связанные с другими приложениями или сервисами.
  3. Безопасность: Отдельный сервер обеспечивает улучшенный уровень безопасности для сервиса пуш-рассылок. Это позволяет более эффективно контролировать доступ к данным о пользователях и обеспечивать их конфиденциальность.
  4. Управление ресурсами: Отдельный сервер позволяет более гибко управлять ресурсами, выделяемыми для работы сервиса пуш-рассылок. Это позволяет оптимизировать использование вычислительных и сетевых ресурсов в соответствии с потребностями сервиса.

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

Разработка сервиса push-рассылок для аптечной сети Фармленд

Развитие сервиса пуш рассылок

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

При запуске приложения, пуш-уведомления отправлялись по статусам заказов при их изменении, а также по всей базе пользователей в случае проведения акций и предложений. Мы предусмотрели возможность отправки пушей только определенным типам устройств: iOS или Android. Отправка сообщений происходила последовательно из очереди.

Начально мы разместили архитектуру микросервиса на сервере, где находился основной проект. Эта система работала в течение полугода, но по мере роста проекта и увеличения числа пользователей и заказов, мы столкнулись с проблемой обработки очереди сообщений. Когда количество заказов и пользователей стало достаточно большим, очередь не успевала обрабатываться в установленные сроки.

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

  1. Масштабирование ресурсов — увеличение ресурсов для ускорения задач в очереди.
  2. Оптимизация обработки задач — использование более эффективных алгоритмов и оптимизация запросов к базе данных.
  3. Приоритизация задач — разделение задачи на категории по их важности или срочности.
  4. Шардинг очередей — разделение очередь на несколько подочередей (шардов) и их параллельная обработка.
  5. Распределенная обработка — несколько обработчиков очереди на разных серверах или узлах для параллельной обработки задач.

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

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

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

Это лишь один из примеров оптимизации
Это лишь один из примеров оптимизации

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

Снежана Аюпова - Account-manager Red Promo

Распределенная отправка пушей

В начальном этапе такой подход был достаточен, но с увеличением числа пользователей стало очевидно, что это не будет работать долгосрочно. Хотя мы могли бы отправить уведомления всем пользователям за пару часов, это вскоре привело бы к непосильной нагрузке на сервер. Поэтому мы перешли к распределенной отправке уведомлений в определенное время.

В ходе работы перед нами стояли следующие задачи и способы их решения:

  1. Отправка пушей в дневное время: для предотвращения беспокойства пользователей и возможности отключения уведомлений, мы настроили отправку пушей по местному времени. Учитывая, что пользователи приложения находятся по всей России, мы начали отправку пушей тем пользователям, чей часовой пояс меньше. Кроме того, мы установили ограничение на отправку уведомления, если местное время пользователя превышает 21:00.
  2. Изменение скорости отправки: мы реализовали возможность изменять скорость отправки уведомлений в зависимости от текущей нагрузки на сервер. Например, во время акций, когда увеличивается посещаемость пользователей, мы можем замедлить рассылку, чтобы снизить дополнительную нагрузку на сервер. После спада нагрузки, обычно после обеда, мы снова увеличиваем скорость отправки.
  3. Отправка пушей за 1 день: учитывая маркетинговые требования и акции, которые действуют только один день, важно предупреждать пользователей об этом заранее. В настоящее время мы успешно отправляем уведомления за день до акции, но с учетом ожидаемого роста числа пользователей в этом году, мы планируем обновление, направленное на улучшение этого процесса.

Инструменты для маркетинга

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

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

Разработка сервиса push-рассылок для аптечной сети Фармленд

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

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

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

Разработка сервиса push-рассылок для аптечной сети Фармленд

Вывод

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

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

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

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

Ставьте лайки и подписывайтесь на наш блог! У нас много интересных дизайн-проектов, кейсов и экспертного материала по разработке веб-проектов любой сложности!

44
2 комментария

Комментарий недоступен

Ответить

и там и там, мы для Фармленда оба приложения разработали

Ответить