Хайлоад в рассылке почты: как спать спокойно
TRANSCRIPT
![Page 1: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/1.jpg)
Хайлоад в рассылке почты:
как спать спокойно
Андрей СасBadoo
![Page 2: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/2.jpg)
Кто вы?
![Page 3: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/3.jpg)
Кто я?
1. Руковожу в Badoo системой уведомлений:
– email;
– push;
– sms.
2. Отвечаю за техническую и продуктовую
стороны.
3. Консультирую в области email-маркетинга,
push-уведомлений.
![Page 4: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/4.jpg)
Бизнес-задачи
1. Предоставить прозрачный API нашим
программистам.
2. Обеспечить отправку почты в объе ̈мах до
150М писем в день.
3. Обеспечить доставку почты в инбоксы
в 95%+ случаев.
![Page 5: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/5.jpg)
И в чѐм же проблема?
![Page 6: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/6.jpg)
И в чѐм же проблема?
1. Внезапно оказывается, что это хайлоад.
2. Требуется глубокая автоматизация.
3. Не мониторишь – не контролируешь.
![Page 7: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/7.jpg)
Откуда хайлоад?
1. Письмо нужно сгенерировать:
– данные из БД;
– шаблоны;
– переводы.
2. Письмо нужно отправить в сторонний
почтовый сервер.
3. Ресурсов на генерацию и отправку –
как на динамический хит на бэкенд.
4. * 150 миллионов писем.
![Page 8: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/8.jpg)
Зачем автоматизация?
1. Спрятать всю работу после генерации
шаблона от разработчиков.
2. Не допустить поломок:
– работоспособность ссылок;
– правильный футер;
– наличие заголовка и получателя.
3. Делать полезные дела в одном месте.
4. * 100 типов писем.
![Page 9: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/9.jpg)
А мониторинг зачем?
Мониторинг нужен чтобы:
1. Обнаруживать проблемы:
– быстро;
– автоматически (даже в выходной).
2. Избежать повторения проблем.
3. Иметь вводную информацию для поиска
причины.
![Page 10: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/10.jpg)
Графики
![Page 11: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/11.jpg)
Триггеры
![Page 12: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/12.jpg)
Наши ноу-хау
![Page 13: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/13.jpg)
Архитектура
Почтовые
сервера –
MTA (Postfix,
CGP)
Сервисы
почты
(Hotmail,
Yahoo, Gmail)
Машины,
создающие
письма
(PHP)
ssmtp Internet
![Page 14: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/14.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 15: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/15.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 16: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/16.jpg)
Генерация
1. Асинхронно:
– синхронно записываем события в БД*;
– автоагрегация событий;
– разбор накопившихся событий cron-скриптом на
другой машине.
![Page 17: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/17.jpg)
Генерация
2. Конфиг для всех писем:
– разработчик;
– шаблон;
– ссылка на описание;
– принадлежность к группе писем;
– тип футера;
– приоритет.
![Page 18: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/18.jpg)
Генерация
3. Делаем добрые дела:
– параметры авторизации;
– параметры статистики;
– проверка целостности;
– картинка для мониторинга открытий;
– AB-тестирование.
![Page 19: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/19.jpg)
Генерация
Условные обозначения:
• Т – автоматический триггер-уведомление;
• Г – график.
4. Мониторинг:
– размер очереди событий (Г, Т);
– время нахождения событий в этой очереди (Г).
![Page 20: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/20.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 21: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/21.jpg)
Очередь писем
1. В виде файлов:
– содержат готовое тело письма и мета-данные;
– не нужны внешние сервисы кроме МТА;
– легко получать статистику;
– просто реализовать повторные попытки.
![Page 22: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/22.jpg)
Очередь писем
2. Мониторинг:
– число файлов писем в ДЦ (Г, Т);
– число файлов в разбивке по машинам (Г);
– число старых файлов на машинах (Т).
![Page 23: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/23.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 24: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/24.jpg)
Отправка в локальный МТА
1. Опять асинхронно.
2. Выбор IP из PHP:– автоматический контроль работоспособности;
– можно управлять через веб-интерфейс;
– можно работать с внешними данными;
– админ теперь* не нужен.
3. ssmtp:– вместо sendmail;
– лѐгкий;
– слегка доработан.
![Page 25: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/25.jpg)
Отправка в локальный МТА
4. Мониторинг:
– что скрипты-рассыльщики запускаются (Т);
– среднее время жизни файла на диске (Г);
– среднее время выполнения mail() (Г);
– число повторов отправки (Г);
– число ошибок отправки (Г, Т);
– число отправленных за сутки, час (Г, Т).
![Page 26: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/26.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 27: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/27.jpg)
Пересылка наружу
Единственный хак – DNS-кэшер unbound.
В остальном – мониторинг:
– очередь на каждом МТА, группе МТА (Г, Т);
– среднее время отсылки в сторонние сервисы (Г);
– наличие процессов МТА, DKIM, unbound (Т);
– правильные hostname МТА (Т).
![Page 28: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/28.jpg)
Этапы отправки писем
Генерация писем
Очередь готовых писем
Отправка в локальный МТА
Пересылка во внешний МТА
![Page 29: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/29.jpg)
МТА
Communigate Pro (CGP):
– быстрый (минимум 5М писем в сутки);
– достаточно конфигурируемый;
– веб-интерфейс (с глюками).
Postfix:
– полная конфигурируемость;
– тоже быстрый;
– бесплатный.
![Page 30: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/30.jpg)
![Page 31: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/31.jpg)
![Page 32: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/32.jpg)
![Page 33: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/33.jpg)
МТА
Требования:
– важна только дисковая подсистема;
– не требователен к CPU и RAM;
– 4 * SAS 10k диски в RAID 1+0;
– хороший RAID-контроллер с «батарейкой».
Кластер * 2 ДЦ:
– 10 рассылающих машин;
– 4 принимающих машины.
![Page 34: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/34.jpg)
МТА
Оптимизация:
– файловая система (noatime/relatime)
– число SMTP-воркеров;
– число DNS-воркеров;
– локальный кэшер DNS-запросов (unbound);
– очередь в большом числе папок;
– лимит на число соединений к MX;
– лимит на число писем в сессии.
![Page 35: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/35.jpg)
Прочий мониторинг
1. Число отправленных писем по типам (Г, Т).
2. Число отправленных писем по машинам (Г,
Т).
3. DNS: A, PTR, SPF, DMARC, MX (Т).
4. noatime/relatime (Т).
![Page 36: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/36.jpg)
Логгирование
Зачем?
1. Статистика (техническая и продуктовая).
2. Поиск и решение проблем.
3. Проверка жалоб пользователей.
События: отправки, открытия, клики, отписки,
ошибки.
![Page 37: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/37.jpg)
Логгирование
Что?
1. Получатель.
2. IP-адрес.
3. Язык, страна, пол.
4. Тип.
5. Уникальный ID письма.
6. Время создания, отправки.
7. Машина-создатель, скрипт-генератор.
![Page 38: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/38.jpg)
![Page 39: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/39.jpg)
Ваши вопросы
Андрей Сас
www.deliverability.ru
Badoo
Habrahabr:
http://habrahabr.ru/company/badoo
Twitter: @BadooDev
![Page 40: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/40.jpg)
![Page 41: Хайлоад в рассылке почты: как спать спокойно](https://reader034.vdocuments.net/reader034/viewer/2022042701/55a172ad1a28abdf668b4706/html5/thumbnails/41.jpg)