Архитектура новой почты Рамблера Андрей Шетухин
Rambler Mail сегодня 240 тысяч новых регистраций в день 66 миллионов пользователей 20 миллионов живых ящиков 192 миллиона контактов в адресной книге 16 миллионов писем в день
Rambler Mail сегодня Мобильная и Wap версии Автосборщик почты Неограниченное количество почтовых доменов 16 видов оформления на любой вкус Умная адресная книга Иконки сервисов
Программное обеспечение FreeBSD 6, 7 MySQL 4.1 nginx 0.7.X + patches Apache mod_perl + PerlXS + C++ memcached Postfix + Dovecot + patches Rspamd + Clamav
MySQL Master-slave репликация Дерево slave серверов Разнесение данных по серверам и таблицам Денормализация данных Только необходимые индексы в таблице
Дерево slave серверов
Партиционирование = 9f1….. f e2
Apache + mod_perl OO Perl – хорошо или плохо? ORM – зло, которое следует избегать SQL Proxy – решение проблем с нагрузкой БД Прозрачное кэширование данных Быстрый шаблонизатор – CTPP Почему не FastCGI?
OO Perl Увеличение скорости разработки Сепарация сущностей Более прозрачный код в большом проекте Медленнее скорость работы Выше требования к памяти Нужны квалифицированные разработчики
ORM Полный цикл разработки с ORM – дороже Простые вещи с ORM делаются просто, сложные – не делаются вовсе Много памяти, много кода, много черной магии Сложность оптимизации запросов и вообще любой отладки ORM – это дорогой вариант sprintf
SQL Proxy Много входящих подключений, мало исходящих Универсальный интерфейс - JSON Простота использования Поддержка Oracle, PostgreSQL, MySQL
Кэширование Memcached Драйвер -> Кэш -> Интерфейс Кэшировать объекты или нет?
Драйвер - Кэш - Интерфейс
Шаблонизатор CTPP 2.5.X Встроенные функции на все случаи жизни Самый быстрый шаблонизатор для Perl Интерфейсы для С, С++, PHP, Perl и Python Простота верстки Моментальная выкатка шаблонов
Тесты
Postfix + Dovecot MX = Mail eXchanger Milter API ClamAv + RspamD Patches, patches, patches… Dovecot Хранение писем: Mailbox
Вопросы?