Инфопространство,
Москва, 07 октября 2019

Как построить эффективную систему доставки уведомлений Лучшие практики

Доклад принят в программу конференции
Иван Богомолов
Pushwoosh

Бэкендщик, техлид в компании Pushwoosh, пишет, ревьюит и предлагает, как сделать код лучше, временами в свободное время с интересом поглядывает в сторону CS.

ivan@bogomolov.su
Тезисы

Pushwoosh как сервис в день рассылает больше 500 000 000 уведомлений (пуши, и-мейлы, сообщения в Facebook). В этом докладе хочется рассказать об одной из наиболее нагруженных подсистем - подсистеме сборки контента, который будет непосредственно отправлен на клиентское устройство, и рассылки сообщений.

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

Акцент будет сделан на ошибки, которые мы совершили при проектировании первой версии на go, к каким выводам пришли, и что есть сейчас.

Архитектурные паттерны
,
Профилирование
,
Разработка библиотек, включая open source библиотеки
,
GO
Подготовительное задание

1. посмотреть на реализацию пула коннектов в open-source проектах (например в редисовом драйвере);
2. попробовать нарисовать архитектуру приложения, которому на вход прилетает шаблон, нужно заполнить этот шаблон данными из разных источников, а результат передать другому сервису. Статус запроса (например коды http 210, 500) нужно в качестве статистики отправить в третий сервис;
3. Пункт 2, но с учетом, того что нужно обрабатывать и передавать не менее 10 000 запросов в секунду
(утилизируя разумные ресурсы 😉);
4. Пункты 2+3 с учетом того, что сервис нужно иногда выключать (релиз/автоскейлинг) и не терять при этом данные.

Другие доклады секции Лучшие практики