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

Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Embed Size (px)

DESCRIPTION

E-mail рассылки – это один из самых важных каналов связи с пользователями для большинства веб-сервисов. С их помощью уведомляют о новых событиях, предлагают продукцию и выставляют счета. Поэтому трудно переоценить значимость правильного решения проблем отправки и доставки почты в крупном проекте. Положительный опыт решения таких задач есть у компании "Badoo", которая ежедневно рассылает десятки миллионов писем своим пользователям. В докладе будет освещена техническая сторона отправки больших объёмов почты и рассказано о конкретной реализации почтового кластера проекта, системы генерации и отсылки почты, метриках качества и мониторинге, применяемом в "Badoo". Целевая аудитория: Разработчики сайтов, активно использующих e-mail как канал связи с пользователями., т.е. практически все веб-разработчики.

Citation preview

Page 1: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

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

Сас Андрей,

делаю почтовые рассылки в Badoo

Page 2: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Page 3: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Я:

•руковожу развитием почтовой рассылки, могу знать не все детали;

Page 4: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Я:

•руковожу развитием почтовой рассылки, могу знать не все детали;

•не админ (извините!).

Page 5: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Я:

•руковожу развитием почтовой рассылки, могу знать не все детали;

•не админ (извините!).

Хвастаюсь:

•год без пролёжек почтовой инфраструктуры;

Page 6: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Я:

•руковожу развитием почтовой рассылки, могу знать не все детали;

•не админ (извините!).

Хвастаюсь:

•год без пролёжек почтовой инфраструктуры;

•97% доставки в инбокс;

Page 7: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто говорит?

Я:

•руковожу развитием почтовой рассылки, могу знать не все детали;

•не админ (извините!).

Хвастаюсь:

•год без пролёжек почтовой инфраструктуры;

•97% доставки в инбокс;

•среднее время доставки почты – 15 с.

Page 8: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 9: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

О чём буду рассказывать?

Page 10: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

О чём буду рассказывать?

А как люди отправляют почту?

Page 11: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 12: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

О чём буду рассказывать?

Как отправлять много-много писем,

быть уверенным в себе

и спать по ночам спокойно

Page 13: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

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

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

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

3. Обеспечить доставку почты во «Входящие» в 95%+ случаев.

Page 14: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

О чём НЕ буду рассказывать?

Как сделать так, чтобы ваши письма не попадали в Spam

Page 15: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А что в этом сложного?

Казалось бы:

•поднял MTA (mail transfer agent)

•сделал mail()

•...

•PROFIT!

Page 16: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А что в этом сложного?

Казалось бы:

•поднял MTA (mail transfer agent)

•сделал mail()

Однако:

•отправка 1 письма = обработка 1 динамического хита

Page 17: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А что в этом сложного?

Казалось бы:

•поднял MTA (mail transfer agent)

•сделал mail()

Однако:

•отправка 1 письма = обработка 1 динамического хита

•а ведь письма ещё нужно сгенерировать

Page 18: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А что в этом сложного?

Казалось бы:

•поднял MTA (mail transfer agent)

•сделал mail()

Однако:

•отправка 1 письма = обработка 1 динамического хита

•а ведь письма ещё нужно сгенерировать

•смелость пойти и узнать правду!!1111

Page 19: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Откуда взялась цифра 150М?

• 50М – каждый день

• 70М – в пике

• 100М – просто красивая цифра

• 150М – «пасаны ваще ребята. молодцы, могёте!»

Page 20: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Особенности больших проектов

Наши мантры:

• нужно отправлять письма асинхронно

Page 21: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Особенности больших проектов

Наши мантры:

• нужно отправлять письма асинхронно

• по-настоящему (вдвойне) асинхронно!

Page 22: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Особенности больших проектов

Наши мантры:

• нужно отправлять письма асинхронно

• по-настоящему (вдвойне) асинхронно!

• требуется балансировка между серверами

Page 23: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Порядок отправки письма

1.Появляется необходимость создать письмо.

2.Постановка в очередь на создание письма.

3.Генерация письма по задачам из очереди на создание.

4.Постановка в очередь на отправку.

5.Отсылка письма из очереди на отправку.

Page 24: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Очередь на отправку

Наша реализация – на файлах. Преимущества:

1.Возможна работа без внешних сервисов.

2.Простота манипулирования письмами.

3.Легко получить статистику / логи.

4.Просто реализуются многократные попытки отправки.

Page 25: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

SSMTP вместо sendmail

Это SMTP-клиент, эмулирующий работу sendmail.

Нам он нравится, т.к.:

•ничего лишнего, только отсылает письмо в MTA (hub)

•супер простой конфиг

•мы его слегка допилили (таймауты + параметры)

Page 26: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Балансировка между MTA

Первая версия – на базе железки F5 LTM:

•weighted round robin

•SMTP мониторинг

Текущая реализация – скрипты на PHP + мониторинг от F5 LTM:

•автоматическое управление всей балансировкой

•красивый веб-интерфейс

•скрипач (админ) не нужен!

Page 27: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Автоматизация при отправке

Хорошее место, чтобы делать добрые дела:

•подставлять:

• параметры для авторизации в ссылки

• параметры для статистики в ссылки

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

• технические заголовки

•проверять целостность и корректность письма

•и даже тестировать работоспособность ссылок!

Page 28: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Железо почтового кластера

Page 29: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Как тюнить MTA?

• оптимизировать файловую систему (noatime)

• увеличить число SMTP воркеров

• увеличить число DNS воркеров

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

• раскладывать очередь по большому числу директорий

• увеличить лимиты на число соединений к одному MX серверу

• выставить лимиты на число писем в сессии

Page 30: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Наши MTA

Исторически – Communigate Pro:

•надёжный

•ОЧЕНЬ быстрый

Для «проблемных» почтовых сервисов – Postfix:

•более конфигурируемый

•есть возможность доработать напильником

Page 31: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Хм, Communigate Pro?..

Но ведь есть Postfix, Exim,

Hurricane, Message Systems, Zrinity

и даже Exchange!

Page 32: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Корпоративный комбайн

•Email – первоначальный, основной продукт

•Calendaring

•VoIP

•IM

•File storage

•IP PBX

•Presence

Page 33: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

А кто им пользуется?

Page 34: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Однако, цифры

На старой машине с 1 диском SCSI 10k:

•5 миллионов писем в сутки

•до 100 писем в секунду в пике

Page 35: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Общее ощущение

+ чрезвычайно стабилен, вплоть до LA = 200 и очереди в 1М писем

+ высокая производительность отправки писем

+ не требователен к памяти и CPU

+ достаточно настроек для большинства проектов

* платный

– нет возможности менять настройки для разных почтовиков

– нет возможности допилить самим

– проблемы с выводом некоторых видов статистики

Page 36: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Статистика и мониторинг

Пока не измеряешь – не контролируешь.

Что было в начале?

•графики по числу писем в очереди на каждом почтовике

•сколько каких писем отправили за сутки

•статистика по LA / CPU usage / Memory usage в Zabbix

Page 37: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 38: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Чего не хватало больше всего?

1. Число файлов, ожидающих отправки в MTA

2. Среднее время отправки письма в MTA

3. Среднее время доставки почты во внешние почтовые сервисы

А также:

• число ошибок отправки писем в MTA

• самые загруженные отправкой почты скриптовые машины

Page 39: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Как реализовали?

Число файлов, ожидающих отправки в MTA:

• просто считаем файлы!

Число ошибок отправки в MTA:

• просто считаем файлы!

Самые загруженные отправкой почты скриптовые машины:

• лог в MySQL

Page 40: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Как реализовали?

Среднее время отправки в MTA:

• время отправки письма минус время создания

Среднее время доставки почты во внешние почтовые сервис:

• парсим логи MTA

• хитрая агрегационная структура (highload!!1111)

Page 41: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 42: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 43: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 44: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 45: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 46: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 47: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Зачем так много?

Page 48: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Dashboard нас спасёт?

1. Несколько dashboard’ов.

2. Даже dashboard’ы стали слишком сложными.

3. Детектировать аномалии даже на менее значимых графиках автоматически.

Page 49: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

1984

Page 50: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

И что же нового?

С осени 2011 года поменялось:

•Название! •1 -> 2,5 года без пролёжек почтовой инфраструктуры;

•97% -> 98% inbox placement rate

•Мониторинг лендинга на мобильных версиях

•Лечение от single point of failure (SPoF)

Page 51: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

И что же нового?

С осени 2011 года поменялось:

•тегирование ссылок для Google Analytics (легко!)

•выгрузка данных в систему business intelligence (BI)

•API для A/B тестирования

Page 52: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Выводы

1. Быть гуру не надо, достаточно хотеть разобраться.

2. Правильная архитектура без мониторинга не спасёт.

3. Внезапно: отправка почты – тоже highload!

4. Не стойте на месте, развивайте почту, если она для вас важна.

5. …

6. PROFIT!!!

Page 53: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"

Ваши вопросы *

* Кроме вопросов о том, как мы доставляемся в Inbox

Page 54: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 55: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"
Page 56: Доклад Андрея Саса на конференции HPC 2013. "Хайлоад в рассылке почты: как спать спокойно"