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

436 views

Published on

Андрей Сас, Email Product Manager, Badoo

Выступление на hpc4.itmozg.ru (25 апреля, Санкт-Петербург)

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
436
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×