SlideShare una empresa de Scribd logo
1 de 56
Хайлоад в рассылке
почты: как спать
спокойно
Сас Андрей,
делаю почтовые рассылки в Badoo
А кто говорит?
А кто говорит?
Я:
•руковожу развитием почтовой рассылки, могу знать не
все детали;
А кто говорит?
Я:
•руковожу развитием почтовой рассылки, могу знать не
все детали;
•не админ (извините!).
А кто говорит?
Я:
•руковожу развитием почтовой рассылки, могу знать не
все детали;
•не админ (извините!).
Хвастаюсь:
•год без пролёжек почтовой инфраструктуры;
А кто говорит?
Я:
•руковожу развитием почтовой рассылки, могу знать не
все детали;
•не админ (извините!).
Хвастаюсь:
•год без пролёжек почтовой инфраструктуры;
•97% доставки в инбокс;
А кто говорит?
Я:
•руковожу развитием почтовой рассылки, могу знать не
все детали;
•не админ (извините!).
Хвастаюсь:
•год без пролёжек почтовой инфраструктуры;
•97% доставки в инбокс;
•среднее время доставки почты – 15 с.
О чём буду
рассказывать?
О чём буду
рассказывать?
А как люди отправляют почту?
О чём буду
рассказывать?
Как отправлять много-много писем,
быть уверенным в себе
и спать по ночам спокойно
Бизнес-задачи
1. Предоставить прозрачный API программистам.
2. Обеспечить отправку почты в объёмах до 150М
писем в день.
3. Обеспечить доставку почты во «Входящие» в 95%+
случаев.
О чём НЕ буду
рассказывать?
Как сделать так, чтобы ваши письма
не попадали в Spam
А что в этом сложного?
Казалось бы:
•поднял MTA (mail transfer agent)
•сделал mail()
•...
•PROFIT!
А что в этом сложного?
Казалось бы:
•поднял MTA (mail transfer agent)
•сделал mail()
Однако:
•отправка 1 письма = обработка 1 динамического хита
А что в этом сложного?
Казалось бы:
•поднял MTA (mail transfer agent)
•сделал mail()
Однако:
•отправка 1 письма = обработка 1 динамического хита
•а ведь письма ещё нужно сгенерировать
А что в этом сложного?
Казалось бы:
•поднял MTA (mail transfer agent)
•сделал mail()
Однако:
•отправка 1 письма = обработка 1 динамического хита
•а ведь письма ещё нужно сгенерировать
•смелость пойти и узнать правду!!1111
Откуда взялась цифра
150М?
• 50М – каждый день
• 70М – в пике
• 100М – просто красивая цифра
• 150М – «пасаны ваще ребята. молодцы, могёте!»
Особенности больших
проектов
Наши мантры:
• нужно отправлять письма асинхронно
Особенности больших
проектов
Наши мантры:
• нужно отправлять письма асинхронно
• по-настоящему (вдвойне) асинхронно!
Особенности больших
проектов
Наши мантры:
• нужно отправлять письма асинхронно
• по-настоящему (вдвойне) асинхронно!
• требуется балансировка между серверами
Порядок отправки
письма
1.Появляется необходимость создать письмо.
2.Постановка в очередь на создание письма.
3.Генерация письма по задачам из очереди на
создание.
4.Постановка в очередь на отправку.
5.Отсылка письма из очереди на отправку.
Очередь на отправку
Наша реализация – на файлах. Преимущества:
1.Возможна работа без внешних сервисов.
2.Простота манипулирования письмами.
3.Легко получить статистику / логи.
4.Просто реализуются многократные попытки отправки.
SSMTP вместо sendmail
Это SMTP-клиент, эмулирующий работу sendmail.
Нам он нравится, т.к.:
•ничего лишнего, только отсылает письмо в MTA (hub)
•супер простой конфиг
•мы его слегка допилили (таймауты + параметры)
Балансировка между
MTA
Первая версия – на базе железки F5 LTM:
•weighted round robin
•SMTP мониторинг
Текущая реализация – скрипты на PHP + мониторинг от
F5 LTM:
•автоматическое управление всей балансировкой
•красивый веб-интерфейс
•скрипач (админ) не нужен!
Автоматизация при
отправке
Хорошее место, чтобы делать добрые дела:
•подставлять:
• параметры для авторизации в ссылки
• параметры для статистики в ссылки
• картинки для мониторинга открытий
• технические заголовки
•проверять целостность и корректность письма
•и даже тестировать работоспособность ссылок!
Железо почтового
кластера
Как тюнить MTA?
• оптимизировать файловую систему (noatime)
• увеличить число SMTP воркеров
• увеличить число DNS воркеров
• поставить локальный кэшер DNS-запросов (unbound)
• раскладывать очередь по большому числу
директорий
• увеличить лимиты на число соединений к одному MX
серверу
• выставить лимиты на число писем в сессии
Наши MTA
Исторически – Communigate Pro:
•надёжный
•ОЧЕНЬ быстрый
Для «проблемных» почтовых сервисов – Postfix:
•более конфигурируемый
•есть возможность доработать напильником
Хм, Communigate Pro?..
Но ведь есть Postfix, Exim,
Hurricane, Message Systems, Zrinity
и даже Exchange!
Корпоративный
комбайн
•Email – первоначальный, основной продукт
•Calendaring
•VoIP
•IM
•File storage
•IP PBX
•Presence
А кто им пользуется?
Однако, цифры
На старой машине с 1 диском SCSI 10k:
•5 миллионов писем в сутки
•до 100 писем в секунду в пике
Общее ощущение
+ чрезвычайно стабилен, вплоть до LA = 200 и очереди
в 1М писем
+ высокая производительность отправки писем
+ не требователен к памяти и CPU
+ достаточно настроек для большинства проектов
* платный
– нет возможности менять настройки для разных
почтовиков
– нет возможности допилить самим
– проблемы с выводом некоторых видов статистики
Статистика и
мониторинг
Пока не измеряешь – не контролируешь.
Что было в начале?
•графики по числу писем в очереди на каждом
почтовике
•сколько каких писем отправили за сутки
•статистика по LA / CPU usage / Memory usage в Zabbix
Чего не хватало больше
всего?
1. Число файлов, ожидающих отправки в MTA
2. Среднее время отправки письма в MTA
3. Среднее время доставки почты во внешние
почтовые сервисы
А также:
• число ошибок отправки писем в MTA
• самые загруженные отправкой почты скриптовые
машины
Как реализовали?
Число файлов, ожидающих отправки в MTA:
• просто считаем файлы! 
Число ошибок отправки в MTA:
• просто считаем файлы! 
Самые загруженные отправкой почты скриптовые
машины:
• лог в MySQL
Как реализовали?
Среднее время отправки в MTA:
• время отправки письма минус время создания
Среднее время доставки почты во внешние почтовые
сервис:
• парсим логи MTA
• хитрая агрегационная структура (highload!!1111)
Зачем так много?
Dashboard нас спасёт?
1. Несколько dashboard’ов.
2. Даже dashboard’ы стали слишком сложными.
3. Детектировать аномалии даже на менее значимых
графиках автоматически.
1984
И что же нового?
С осени 2011 года поменялось:
•Название! 
•1 -> 2,5 года без пролёжек почтовой инфраструктуры;
•97% -> 98% inbox placement rate
•Мониторинг лендинга на мобильных версиях
•Лечение от single point of failure (SPoF)
И что же нового?
С осени 2011 года поменялось:
•тегирование ссылок для Google Analytics (легко!)
•выгрузка данных в систему business intelligence (BI)
•API для A/B тестирования
Выводы
1. Быть гуру не надо, достаточно хотеть разобраться.
2. Правильная архитектура без мониторинга не спасёт.
3. Внезапно: отправка почты – тоже highload!
4. Не стойте на месте, развивайте почту, если она для
вас важна.
5. …
6. PROFIT!!!
Ваши вопросы *
* Кроме вопросов о том, как
мы доставляемся в Inbox
«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»

Más contenido relacionado

La actualidad más candente

полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
rit2011
 
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
Andrey Sas
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Ontico
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Sergey Xek
 
Высоконагруженная отправка push-уведомлений / Алексей Акулович
Высоконагруженная отправка push-уведомлений / Алексей АкуловичВысоконагруженная отправка push-уведомлений / Алексей Акулович
Высоконагруженная отправка push-уведомлений / Алексей Акулович
Ontico
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Hl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev PochtaHl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev Pochta
HighLoad2009
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
AvitoTech
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Ontico
 
CDNvideo: ускорение сайтов
CDNvideo: ускорение сайтовCDNvideo: ускорение сайтов
CDNvideo: ускорение сайтов
Dmitry Glavatskiy
 

La actualidad más candente (20)

полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
Eмейл-рассылки для профи: частые ошибки, что улучшать, как мониторить (Андрей...
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
Высоконагруженная отправка push-уведомлений / Алексей Акулович
Высоконагруженная отправка push-уведомлений / Алексей АкуловичВысоконагруженная отправка push-уведомлений / Алексей Акулович
Высоконагруженная отправка push-уведомлений / Алексей Акулович
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Hl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev PochtaHl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev Pochta
 
Дмитрий Главацкий, CDNvideo: "Ускорение сайта как способ повысить конверсию"
Дмитрий Главацкий, CDNvideo: "Ускорение сайта как способ повысить конверсию"Дмитрий Главацкий, CDNvideo: "Ускорение сайта как способ повысить конверсию"
Дмитрий Главацкий, CDNvideo: "Ускорение сайта как способ повысить конверсию"
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Sivko
SivkoSivko
Sivko
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
Ровная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластереРовная балансировка нагрузки на фронтенд-кластере
Ровная балансировка нагрузки на фронтенд-кластере
 
CDNvideo: ускорение сайтов
CDNvideo: ускорение сайтовCDNvideo: ускорение сайтов
CDNvideo: ускорение сайтов
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAP
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 

Destacado

Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 

Destacado (15)

«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
 
Алексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsАлексей Николаенков, Devexperts
Алексей Николаенков, Devexperts
 
Анатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen ServicesАнатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen Services
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, Oracle
 
Елизавета Штофф, iChar
Елизавета Штофф, iCharЕлизавета Штофф, iChar
Елизавета Штофф, iChar
 
Александр Семенов, КОРУС Консалтинг
Александр Семенов, КОРУС КонсалтингАлександр Семенов, КОРУС Консалтинг
Александр Семенов, КОРУС Консалтинг
 
Артем Кумпель, ITmozg
Артем Кумпель, ITmozgАртем Кумпель, ITmozg
Артем Кумпель, ITmozg
 
Шпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru GroupШпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru Group
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
Алена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.ДеньгиАлена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.Деньги
 
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, Oracle
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 

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

Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)
Ontico
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Sergey Xek
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 
презентация 3
презентация 3презентация 3
презентация 3
Borissss
 
Андрей Сас (Badoo)
Андрей Сас (Badoo)Андрей Сас (Badoo)
Андрей Сас (Badoo)
Ontico
 
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
Badoo Development
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
IT-Portfolio
 
Шок и трепет: e-mail консалтинг.(Андрей Сас)
Шок и трепет: e-mail консалтинг.(Андрей Сас)Шок и трепет: e-mail консалтинг.(Андрей Сас)
Шок и трепет: e-mail консалтинг.(Андрей Сас)
Ontico
 

Similar a «Хайлоад в рассылке почты: как спать спокойно» (20)

Интернет-бизнес Как повысить доставляемость вашей email-рассылки (email-рассы...
Интернет-бизнес Как повысить доставляемость вашей email-рассылки (email-рассы...Интернет-бизнес Как повысить доставляемость вашей email-рассылки (email-рассы...
Интернет-бизнес Как повысить доставляемость вашей email-рассылки (email-рассы...
 
Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
 
Почему почта не работает
Почему почта не работаетПочему почта не работает
Почему почта не работает
 
презентация 3
презентация 3презентация 3
презентация 3
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discovery
 
Андрей Сас (Badoo)
Андрей Сас (Badoo)Андрей Сас (Badoo)
Андрей Сас (Badoo)
 
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
Доклад Андрея Саса на конференции РИТ++ 2014. "Email-рассылки для профи- част...
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
 
Техническая реализация директ-мэйла вступление
Техническая реализация директ-мэйла вступлениеТехническая реализация директ-мэйла вступление
Техническая реализация директ-мэйла вступление
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Шок и трепет: e-mail консалтинг.(Андрей Сас)
Шок и трепет: e-mail консалтинг.(Андрей Сас)Шок и трепет: e-mail консалтинг.(Андрей Сас)
Шок и трепет: e-mail консалтинг.(Андрей Сас)
 

Más de Nata_Churda

Más de Nata_Churda (9)

«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»
 
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
 
«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...
 
«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»
 
Белогрудов Владислав, EMC
Белогрудов Владислав, EMCБелогрудов Владислав, EMC
Белогрудов Владислав, EMC
 
Анна Ященко, Google
Анна Ященко, GoogleАнна Ященко, Google
Анна Ященко, Google
 
Акулов Егор, Mail.ru Group
Акулов Егор, Mail.ru GroupАкулов Егор, Mail.ru Group
Акулов Егор, Mail.ru Group
 
Екатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozgЕкатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozg
 
Павел Савинкин, Sell Solutions
Павел Савинкин, Sell SolutionsПавел Савинкин, Sell Solutions
Павел Савинкин, Sell Solutions
 

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

  • 1. Хайлоад в рассылке почты: как спать спокойно Сас Андрей, делаю почтовые рассылки в Badoo
  • 3. А кто говорит? Я: •руковожу развитием почтовой рассылки, могу знать не все детали;
  • 4. А кто говорит? Я: •руковожу развитием почтовой рассылки, могу знать не все детали; •не админ (извините!).
  • 5. А кто говорит? Я: •руковожу развитием почтовой рассылки, могу знать не все детали; •не админ (извините!). Хвастаюсь: •год без пролёжек почтовой инфраструктуры;
  • 6. А кто говорит? Я: •руковожу развитием почтовой рассылки, могу знать не все детали; •не админ (извините!). Хвастаюсь: •год без пролёжек почтовой инфраструктуры; •97% доставки в инбокс;
  • 7. А кто говорит? Я: •руковожу развитием почтовой рассылки, могу знать не все детали; •не админ (извините!). Хвастаюсь: •год без пролёжек почтовой инфраструктуры; •97% доставки в инбокс; •среднее время доставки почты – 15 с.
  • 8.
  • 10. О чём буду рассказывать? А как люди отправляют почту?
  • 11.
  • 12. О чём буду рассказывать? Как отправлять много-много писем, быть уверенным в себе и спать по ночам спокойно
  • 13. Бизнес-задачи 1. Предоставить прозрачный API программистам. 2. Обеспечить отправку почты в объёмах до 150М писем в день. 3. Обеспечить доставку почты во «Входящие» в 95%+ случаев.
  • 14. О чём НЕ буду рассказывать? Как сделать так, чтобы ваши письма не попадали в Spam
  • 15. А что в этом сложного? Казалось бы: •поднял MTA (mail transfer agent) •сделал mail() •... •PROFIT!
  • 16. А что в этом сложного? Казалось бы: •поднял MTA (mail transfer agent) •сделал mail() Однако: •отправка 1 письма = обработка 1 динамического хита
  • 17. А что в этом сложного? Казалось бы: •поднял MTA (mail transfer agent) •сделал mail() Однако: •отправка 1 письма = обработка 1 динамического хита •а ведь письма ещё нужно сгенерировать
  • 18. А что в этом сложного? Казалось бы: •поднял MTA (mail transfer agent) •сделал mail() Однако: •отправка 1 письма = обработка 1 динамического хита •а ведь письма ещё нужно сгенерировать •смелость пойти и узнать правду!!1111
  • 19. Откуда взялась цифра 150М? • 50М – каждый день • 70М – в пике • 100М – просто красивая цифра • 150М – «пасаны ваще ребята. молодцы, могёте!»
  • 20. Особенности больших проектов Наши мантры: • нужно отправлять письма асинхронно
  • 21. Особенности больших проектов Наши мантры: • нужно отправлять письма асинхронно • по-настоящему (вдвойне) асинхронно!
  • 22. Особенности больших проектов Наши мантры: • нужно отправлять письма асинхронно • по-настоящему (вдвойне) асинхронно! • требуется балансировка между серверами
  • 23. Порядок отправки письма 1.Появляется необходимость создать письмо. 2.Постановка в очередь на создание письма. 3.Генерация письма по задачам из очереди на создание. 4.Постановка в очередь на отправку. 5.Отсылка письма из очереди на отправку.
  • 24. Очередь на отправку Наша реализация – на файлах. Преимущества: 1.Возможна работа без внешних сервисов. 2.Простота манипулирования письмами. 3.Легко получить статистику / логи. 4.Просто реализуются многократные попытки отправки.
  • 25. SSMTP вместо sendmail Это SMTP-клиент, эмулирующий работу sendmail. Нам он нравится, т.к.: •ничего лишнего, только отсылает письмо в MTA (hub) •супер простой конфиг •мы его слегка допилили (таймауты + параметры)
  • 26. Балансировка между MTA Первая версия – на базе железки F5 LTM: •weighted round robin •SMTP мониторинг Текущая реализация – скрипты на PHP + мониторинг от F5 LTM: •автоматическое управление всей балансировкой •красивый веб-интерфейс •скрипач (админ) не нужен!
  • 27. Автоматизация при отправке Хорошее место, чтобы делать добрые дела: •подставлять: • параметры для авторизации в ссылки • параметры для статистики в ссылки • картинки для мониторинга открытий • технические заголовки •проверять целостность и корректность письма •и даже тестировать работоспособность ссылок!
  • 29. Как тюнить MTA? • оптимизировать файловую систему (noatime) • увеличить число SMTP воркеров • увеличить число DNS воркеров • поставить локальный кэшер DNS-запросов (unbound) • раскладывать очередь по большому числу директорий • увеличить лимиты на число соединений к одному MX серверу • выставить лимиты на число писем в сессии
  • 30. Наши MTA Исторически – Communigate Pro: •надёжный •ОЧЕНЬ быстрый Для «проблемных» почтовых сервисов – Postfix: •более конфигурируемый •есть возможность доработать напильником
  • 31. Хм, Communigate Pro?.. Но ведь есть Postfix, Exim, Hurricane, Message Systems, Zrinity и даже Exchange!
  • 32. Корпоративный комбайн •Email – первоначальный, основной продукт •Calendaring •VoIP •IM •File storage •IP PBX •Presence
  • 33. А кто им пользуется?
  • 34. Однако, цифры На старой машине с 1 диском SCSI 10k: •5 миллионов писем в сутки •до 100 писем в секунду в пике
  • 35. Общее ощущение + чрезвычайно стабилен, вплоть до LA = 200 и очереди в 1М писем + высокая производительность отправки писем + не требователен к памяти и CPU + достаточно настроек для большинства проектов * платный – нет возможности менять настройки для разных почтовиков – нет возможности допилить самим – проблемы с выводом некоторых видов статистики
  • 36. Статистика и мониторинг Пока не измеряешь – не контролируешь. Что было в начале? •графики по числу писем в очереди на каждом почтовике •сколько каких писем отправили за сутки •статистика по LA / CPU usage / Memory usage в Zabbix
  • 37.
  • 38. Чего не хватало больше всего? 1. Число файлов, ожидающих отправки в MTA 2. Среднее время отправки письма в MTA 3. Среднее время доставки почты во внешние почтовые сервисы А также: • число ошибок отправки писем в MTA • самые загруженные отправкой почты скриптовые машины
  • 39. Как реализовали? Число файлов, ожидающих отправки в MTA: • просто считаем файлы!  Число ошибок отправки в MTA: • просто считаем файлы!  Самые загруженные отправкой почты скриптовые машины: • лог в MySQL
  • 40. Как реализовали? Среднее время отправки в MTA: • время отправки письма минус время создания Среднее время доставки почты во внешние почтовые сервис: • парсим логи MTA • хитрая агрегационная структура (highload!!1111)
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 48. Dashboard нас спасёт? 1. Несколько dashboard’ов. 2. Даже dashboard’ы стали слишком сложными. 3. Детектировать аномалии даже на менее значимых графиках автоматически.
  • 49. 1984
  • 50. И что же нового? С осени 2011 года поменялось: •Название!  •1 -> 2,5 года без пролёжек почтовой инфраструктуры; •97% -> 98% inbox placement rate •Мониторинг лендинга на мобильных версиях •Лечение от single point of failure (SPoF)
  • 51. И что же нового? С осени 2011 года поменялось: •тегирование ссылок для Google Analytics (легко!) •выгрузка данных в систему business intelligence (BI) •API для A/B тестирования
  • 52. Выводы 1. Быть гуру не надо, достаточно хотеть разобраться. 2. Правильная архитектура без мониторинга не спасёт. 3. Внезапно: отправка почты – тоже highload! 4. Не стойте на месте, развивайте почту, если она для вас важна. 5. … 6. PROFIT!!!
  • 53. Ваши вопросы * * Кроме вопросов о том, как мы доставляемся в Inbox