Бекэнд для push-уведомлений своими руками
DESCRIPTION
Описана методология построения бюджетного бекэнда для push-уведомлений своими руками. Как избежать трат на облачные системы, в чем преимущества собственных решений.TRANSCRIPT
![Page 1: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/1.jpg)
Методология построения мобильных PUSH бекэндов
Александр Михайленко, Jeapie14.06.2014
![Page 2: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/2.jpg)
Виды PUSH-уведомлений
• Транзакционные• Событийные• Маркетинговые
● Native PUSH● Rich HTML5 PUSH
![Page 3: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/3.jpg)
Почему маркетинговые работают?
1. В качественных 50+% на подписке.2. 26% пользователей запускают приложение только
один раз.3. Только 26% становятся сразу достаточно вовлечены.4. 2x удержание, +26% monthly app opens.5. 25+% ожидают гибкое изменение UX в зависимости
от локации и др.
![Page 4: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/4.jpg)
Задача
1 млн. push-уведомлений
< 3 минут
![Page 5: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/5.jpg)
Решение проблемы “в лоб” №1
![Page 6: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/6.jpg)
Parse: игра на понижение
Было (c 2011г.): FREE 1 000 000 PUSH notificatons /mo
Стало (с 1 мая 2014г.): FREE 1 000 000 Unique recipients
![Page 7: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/7.jpg)
Решение проблемы “в лоб” №2
● https://github.com/Redth/PushSharp● https://github.com/rpush/rpush● https://github.com/jleclanche/django-
push-notifications● https://github.com/duccio/ApnsPHP● https://github.com/notnoop/java-apns● https://github.com/neoziro/push-notify● …
![Page 8: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/8.jpg)
Пишем свой бекэнд
Ожидание Реальность
![Page 9: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/9.jpg)
GCM (Android)
1. HTTP: api_key(header), device tokens(json), data {text:”hello”, count:3, img11:”url”}
2. Парсим данные на стороне приложения (GCMReceiver)3. Show local notification на стороне приложения
1 block - 100 tokens. На любом языке ~0,4 c.
Скорость: 300/с. не напрягаясь
![Page 10: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/10.jpg)
APNS (iOS)
1. Socket: certs (prod, test).
2. Жесткий формат{aps:{ body: “text”, sound: “default”, badge: 2 },own:”data”}
3. 255 chars, иначе разрыв
for(i:=0, i<n, i++){ sendPush($id); }
+
CRON
![Page 11: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/11.jpg)
Особенность APNS
● One connection for mass push● Up to 20 connections from 1 IP● Кодируйте русский правильно. А то '\u0430' => 'а'
![Page 12: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/12.jpg)
Итог
• Синхронная передача 1/с. на отсылку + ожидание.
• Запустим 20 процессов - 20/с. • 1 000 000 -> 13 часов.
![Page 13: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/13.jpg)
Асинхронная отсылка
Node.js (https://www.npmjs.org/package/apnagent)
![Page 14: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/14.jpg)
Итог
• Асинхронная передача 300/с. • Запустим 20 процесс - 6000/с. • 1 000 000 -> 2 м. 46 с.
1 VPS за $7 в месяц
![Page 15: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/15.jpg)
Чего-то не хватает?
![Page 16: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/16.jpg)
1. Фен-шуй
• Доставка по расписанию согласно временным зонам.• Учет локализации.• Несколько устройств у одного пользователя. Боремся с
дублированием.• Перенос в облако и настройка масштабирования.• Аналитика доставки и открытия на стороне девайса.
![Page 17: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/17.jpg)
2. Rich PUSH (Splash)
1. Конструктор2. A/B тестирование3. Placements4. Специальная логика
![Page 18: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/18.jpg)
3. Таргетинг?
ИЛИ
+293% more response on average
![Page 19: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/19.jpg)
Накладываем маркетинг на аналитику
![Page 20: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/20.jpg)
Специализированные сервисы
![Page 21: Бекэнд для push-уведомлений своими руками](https://reader034.vdocuments.site/reader034/viewer/2022051513/547a0b1eb4795990098b493e/html5/thumbnails/21.jpg)
Спасибо за внимание!
Александр МихайленкоChief Business Development Officer
Jeapie
@alexandrmikhfb.com/alexandrmikh