3. Кто я?
1. Руковожу в Badoo системой уведомлений:
– email;
– push;
– sms.
2. Отвечаю за техническую и продуктовую
стороны.
3. Консультирую в области email-маркетинга,
push-уведомлений.
4. Бизнес-задачи
1. Предоставить прозрачный API нашим
программистам.
2. Обеспечить отправку почты в объёмах до
150М писем в день.
3. Обеспечить доставку почты в инбоксы
в 95%+ случаев.
6. И в чѐм же проблема?
1. Внезапно оказывается, что это хайлоад.
2. Требуется глубокая автоматизация.
3. Не мониторишь – не контролируешь.
7. Откуда хайлоад?
1. Письмо нужно сгенерировать:
–
–
–
данные из БД;
шаблоны;
переводы.
2. Письмо нужно отправить в сторонний
почтовый сервер.
3. Ресурсов на генерацию и отправку –
как на динамический хит на бэкенд.
4. * 150 миллионов писем.
8. Зачем автоматизация?
1. Спрятать всю работу после генерации
шаблона от разработчиков.
2. Не допустить поломок:
–
–
–
работоспособность ссылок;
правильный футер;
наличие заголовка и получателя.
3. Делать полезные дела в одном месте.
4. * 100 типов писем.
9. А мониторинг зачем?
Мониторинг нужен чтобы:
1. Обнаруживать проблемы:
–
–
быстро;
автоматически (даже в выходной).
2. Избежать повторения проблем.
3. Иметь вводную информацию для поиска
причины.
19. Генерация
Условные обозначения:
• Т – автоматический триггер-уведомление;
• Г – график.
4. Мониторинг:
–
–
размер очереди событий (Г, Т);
время нахождения событий в этой очереди (Г).
21. Очередь писем
1. В виде файлов:
–
–
–
–
содержат готовое тело письма и мета-данные;
не нужны внешние сервисы кроме МТА;
легко получать статистику;
просто реализовать повторные попытки.
24. Отправка в локальный МТА
1. Опять асинхронно.
2. Выбор IP из PHP:
–
–
–
–
автоматический контроль работоспособности;
можно управлять через веб-интерфейс;
можно работать с внешними данными;
админ теперь* не нужен.
3. ssmtp:
–
–
–
вместо sendmail;
лѐгкий;
слегка доработан.
25. Отправка в локальный МТА
4. Мониторинг:
–
–
–
–
–
–
что скрипты-рассыльщики запускаются (Т);
среднее время жизни файла на диске (Г);
среднее время выполнения mail() (Г);
число повторов отправки (Г);
число ошибок отправки (Г, Т);
число отправленных за сутки, час (Г, Т).
27. Пересылка наружу
Единственный хак – DNS-кэшер unbound.
В остальном – мониторинг:
–
–
–
–
очередь на каждом МТА, группе МТА (Г, Т);
среднее время отсылки в сторонние сервисы (Г);
наличие процессов МТА, DKIM, unbound (Т);
правильные hostname МТА (Т).