41
Хайлоад в рассылке почты: как спать спокойно Андрей Сас Badoo

Хайлоад в рассылке почты: как спать спокойно

  • Upload
    sqalab

  • View
    344

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Хайлоад в рассылке почты: как спать спокойно

Хайлоад в рассылке почты:

как спать спокойно

Андрей СасBadoo

Page 2: Хайлоад в рассылке почты: как спать спокойно

Кто вы?

Page 3: Хайлоад в рассылке почты: как спать спокойно

Кто я?

1. Руковожу в Badoo системой уведомлений:

– email;

– push;

– sms.

2. Отвечаю за техническую и продуктовую

стороны.

3. Консультирую в области email-маркетинга,

push-уведомлений.

Page 4: Хайлоад в рассылке почты: как спать спокойно

Бизнес-задачи

1. Предоставить прозрачный API нашим

программистам.

2. Обеспечить отправку почты в объе ̈мах до

150М писем в день.

3. Обеспечить доставку почты в инбоксы

в 95%+ случаев.

Page 5: Хайлоад в рассылке почты: как спать спокойно

И в чѐм же проблема?

Page 6: Хайлоад в рассылке почты: как спать спокойно

И в чѐм же проблема?

1. Внезапно оказывается, что это хайлоад.

2. Требуется глубокая автоматизация.

3. Не мониторишь – не контролируешь.

Page 7: Хайлоад в рассылке почты: как спать спокойно

Откуда хайлоад?

1. Письмо нужно сгенерировать:

– данные из БД;

– шаблоны;

– переводы.

2. Письмо нужно отправить в сторонний

почтовый сервер.

3. Ресурсов на генерацию и отправку –

как на динамический хит на бэкенд.

4. * 150 миллионов писем.

Page 8: Хайлоад в рассылке почты: как спать спокойно

Зачем автоматизация?

1. Спрятать всю работу после генерации

шаблона от разработчиков.

2. Не допустить поломок:

– работоспособность ссылок;

– правильный футер;

– наличие заголовка и получателя.

3. Делать полезные дела в одном месте.

4. * 100 типов писем.

Page 9: Хайлоад в рассылке почты: как спать спокойно

А мониторинг зачем?

Мониторинг нужен чтобы:

1. Обнаруживать проблемы:

– быстро;

– автоматически (даже в выходной).

2. Избежать повторения проблем.

3. Иметь вводную информацию для поиска

причины.

Page 10: Хайлоад в рассылке почты: как спать спокойно

Графики

Page 11: Хайлоад в рассылке почты: как спать спокойно

Триггеры

Page 12: Хайлоад в рассылке почты: как спать спокойно

Наши ноу-хау

Page 13: Хайлоад в рассылке почты: как спать спокойно

Архитектура

Почтовые

сервера –

MTA (Postfix,

CGP)

Сервисы

почты

(Hotmail,

Yahoo, Gmail)

Машины,

создающие

письма

(PHP)

ssmtp Internet

Page 14: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 15: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 16: Хайлоад в рассылке почты: как спать спокойно

Генерация

1. Асинхронно:

– синхронно записываем события в БД*;

– автоагрегация событий;

– разбор накопившихся событий cron-скриптом на

другой машине.

Page 17: Хайлоад в рассылке почты: как спать спокойно

Генерация

2. Конфиг для всех писем:

– разработчик;

– шаблон;

– ссылка на описание;

– принадлежность к группе писем;

– тип футера;

– приоритет.

Page 18: Хайлоад в рассылке почты: как спать спокойно

Генерация

3. Делаем добрые дела:

– параметры авторизации;

– параметры статистики;

– проверка целостности;

– картинка для мониторинга открытий;

– AB-тестирование.

Page 19: Хайлоад в рассылке почты: как спать спокойно

Генерация

Условные обозначения:

• Т – автоматический триггер-уведомление;

• Г – график.

4. Мониторинг:

– размер очереди событий (Г, Т);

– время нахождения событий в этой очереди (Г).

Page 20: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 21: Хайлоад в рассылке почты: как спать спокойно

Очередь писем

1. В виде файлов:

– содержат готовое тело письма и мета-данные;

– не нужны внешние сервисы кроме МТА;

– легко получать статистику;

– просто реализовать повторные попытки.

Page 22: Хайлоад в рассылке почты: как спать спокойно

Очередь писем

2. Мониторинг:

– число файлов писем в ДЦ (Г, Т);

– число файлов в разбивке по машинам (Г);

– число старых файлов на машинах (Т).

Page 23: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 24: Хайлоад в рассылке почты: как спать спокойно

Отправка в локальный МТА

1. Опять асинхронно.

2. Выбор IP из PHP:– автоматический контроль работоспособности;

– можно управлять через веб-интерфейс;

– можно работать с внешними данными;

– админ теперь* не нужен.

3. ssmtp:– вместо sendmail;

– лѐгкий;

– слегка доработан.

Page 25: Хайлоад в рассылке почты: как спать спокойно

Отправка в локальный МТА

4. Мониторинг:

– что скрипты-рассыльщики запускаются (Т);

– среднее время жизни файла на диске (Г);

– среднее время выполнения mail() (Г);

– число повторов отправки (Г);

– число ошибок отправки (Г, Т);

– число отправленных за сутки, час (Г, Т).

Page 26: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 27: Хайлоад в рассылке почты: как спать спокойно

Пересылка наружу

Единственный хак – DNS-кэшер unbound.

В остальном – мониторинг:

– очередь на каждом МТА, группе МТА (Г, Т);

– среднее время отсылки в сторонние сервисы (Г);

– наличие процессов МТА, DKIM, unbound (Т);

– правильные hostname МТА (Т).

Page 28: Хайлоад в рассылке почты: как спать спокойно

Этапы отправки писем

Генерация писем

Очередь готовых писем

Отправка в локальный МТА

Пересылка во внешний МТА

Page 29: Хайлоад в рассылке почты: как спать спокойно

МТА

Communigate Pro (CGP):

– быстрый (минимум 5М писем в сутки);

– достаточно конфигурируемый;

– веб-интерфейс (с глюками).

Postfix:

– полная конфигурируемость;

– тоже быстрый;

– бесплатный.

Page 30: Хайлоад в рассылке почты: как спать спокойно
Page 31: Хайлоад в рассылке почты: как спать спокойно
Page 32: Хайлоад в рассылке почты: как спать спокойно
Page 33: Хайлоад в рассылке почты: как спать спокойно

МТА

Требования:

– важна только дисковая подсистема;

– не требователен к CPU и RAM;

– 4 * SAS 10k диски в RAID 1+0;

– хороший RAID-контроллер с «батарейкой».

Кластер * 2 ДЦ:

– 10 рассылающих машин;

– 4 принимающих машины.

Page 34: Хайлоад в рассылке почты: как спать спокойно

МТА

Оптимизация:

– файловая система (noatime/relatime)

– число SMTP-воркеров;

– число DNS-воркеров;

– локальный кэшер DNS-запросов (unbound);

– очередь в большом числе папок;

– лимит на число соединений к MX;

– лимит на число писем в сессии.

Page 35: Хайлоад в рассылке почты: как спать спокойно

Прочий мониторинг

1. Число отправленных писем по типам (Г, Т).

2. Число отправленных писем по машинам (Г,

Т).

3. DNS: A, PTR, SPF, DMARC, MX (Т).

4. noatime/relatime (Т).

Page 36: Хайлоад в рассылке почты: как спать спокойно

Логгирование

Зачем?

1. Статистика (техническая и продуктовая).

2. Поиск и решение проблем.

3. Проверка жалоб пользователей.

События: отправки, открытия, клики, отписки,

ошибки.

Page 37: Хайлоад в рассылке почты: как спать спокойно

Логгирование

Что?

1. Получатель.

2. IP-адрес.

3. Язык, страна, пол.

4. Тип.

5. Уникальный ID письма.

6. Время создания, отправки.

7. Машина-создатель, скрипт-генератор.

Page 38: Хайлоад в рассылке почты: как спать спокойно
Page 39: Хайлоад в рассылке почты: как спать спокойно

Ваши вопросы

Андрей Сас

[email protected]

www.deliverability.ru

Badoo

Habrahabr:

http://habrahabr.ru/company/badoo

Twitter: @BadooDev

Page 40: Хайлоад в рассылке почты: как спать спокойно
Page 41: Хайлоад в рассылке почты: как спать спокойно