Архитектура новойпочты Рамблера

Содержание

Слайд 2

Rambler Mail сегодня

240 тысяч новых регистраций в день
66 миллионов пользователей

Rambler Mail сегодня 240 тысяч новых регистраций в день 66 миллионов пользователей
20 миллионов “живых” ящиков
192 миллиона контактов в адресной книге
16 миллионов писем в день

Слайд 3

Rambler Mail сегодня

Мобильная и Wap версии
Автосборщик почты
Неограниченное количество почтовых

Rambler Mail сегодня Мобильная и Wap версии Автосборщик почты Неограниченное количество почтовых
доменов
16 видов оформления на любой вкус
Умная адресная книга
Иконки сервисов

Слайд 4

Программное обеспечение

FreeBSD 6, 7
MySQL 4.1
nginx 0.7.X + patches
Apache

Программное обеспечение FreeBSD 6, 7 MySQL 4.1 nginx 0.7.X + patches Apache
1.3 + mod_perl + PerlXS + C++
memcached
Postfix + Dovecot + patches
Rspamd + Clamav

Слайд 5

MySQL

Master-slave репликация
“Дерево” slave серверов
Разнесение данных по серверам и

MySQL Master-slave репликация “Дерево” slave серверов Разнесение данных по серверам и таблицам
таблицам
Денормализация данных
Только необходимые индексы в таблице

Слайд 6

“Дерево” slave серверов

“Дерево” slave серверов

Слайд 7

Партиционирование

MD5(“hello@rambler.ru”) =
9f1….. f e2

Партиционирование MD5(“hello@rambler.ru”) = 9f1….. f e2

Слайд 8

Apache + mod_perl

OO Perl – хорошо или плохо?
ORM – зло,

Apache + mod_perl OO Perl – хорошо или плохо? ORM – зло,
которое следует избегать
SQL Proxy – решение проблем с нагрузкой БД
Прозрачное кэширование данных
Быстрый шаблонизатор – CTPP
Почему не FastCGI?

Слайд 9

OO Perl

Увеличение скорости разработки
Сепарация сущностей
Более прозрачный код в большом

OO Perl Увеличение скорости разработки Сепарация сущностей Более прозрачный код в большом
проекте
Медленнее скорость работы
Выше требования к памяти
Нужны квалифицированные разработчики

Слайд 10

ORM

Полный цикл разработки с ORM – дороже
Простые вещи с ORM

ORM Полный цикл разработки с ORM – дороже Простые вещи с ORM
делаются просто, сложные – не делаются вовсе
Много памяти, много кода, много черной магии
Сложность оптимизации запросов и вообще любой отладки
ORM – это дорогой вариант sprintf

Слайд 11

SQL Proxy

Много входящих подключений, мало исходящих
Универсальный интерфейс - JSON
Простота

SQL Proxy Много входящих подключений, мало исходящих Универсальный интерфейс - JSON Простота
использования
Поддержка Oracle, PostgreSQL, MySQL

Слайд 12

Кэширование

Memcached
Драйвер -> Кэш -> Интерфейс
Кэшировать объекты или нет?

Кэширование Memcached Драйвер -> Кэш -> Интерфейс Кэшировать объекты или нет?

Слайд 13

Драйвер - Кэш - Интерфейс

Драйвер - Кэш - Интерфейс

Слайд 14

Шаблонизатор

CTPP 2.5.X
Встроенные функции на все случаи жизни
Самый быстрый шаблонизатор

Шаблонизатор CTPP 2.5.X Встроенные функции на все случаи жизни Самый быстрый шаблонизатор
для Perl
Интерфейсы для С, С++, PHP, Perl и Python
Простота верстки
Моментальная выкатка шаблонов

Слайд 15

Тесты
http://ctpp.havoc.ru/template_benchmarks.html

Тесты http://ctpp.havoc.ru/template_benchmarks.html

Слайд 16

Postfix + Dovecot

MX = Mail eXchanger
Milter API <-> ClamAv +

Postfix + Dovecot MX = Mail eXchanger Milter API ClamAv + RspamD
RspamD
Patches, patches, patches…
Dovecot
Хранение писем: Mailbox