Разработка архитектуры больших систем О чем нужно думать перед кодированием? Александр Горный Продюсер Почта.ру
О чём пойдёт речь? Большая система это система с большой нагрузкой Архитектура это то, что определяется до кодирования и остаётся с проектом навсегда Хранение и представление основных данных. Языки реализации Средства масштабирования и протоколы взаимодействия элементов системы Используемые чужие технологии и ключевые библиотеки Внешние запросы на основных страницах Web-почта – идеальный пример
Использование чужого кода Поддержка чужого кода очень дорога. Правила выбора чужих продуктов. Только надежный и проверенный чужой код. Чужой код не взаимодействует с пользователем. Чужой код не взаимодействует с внешним миром.
Внешние запросы на основных страницах 90% торможения на ожидании внешних ресурсов на 2-7 страницах Основные страницы почты Главная страница и список папок. Ник следует хранить в сессии Легкая доступность количества писем в папке. Список писем и просмотр письма Разбор MIME на этапе загрузки Хранение сортировки на бекенде
Надежность хранения Использование только проверенных систем Заложенная система масштабирования Расширяемость под новый функционал Эффективная выдача на основных страницах Возможность бекапа
Как хранить почту? СУБД СУБД и файлы Собственное хранилище Отдельная директория и отдельный индекс для каждого пользователя. Письмо в отдельном файле. Индексный файл
Масштабирование Центральный сервер, бекенды, фронтенды Сверхлегкий фронтенд как альтернатива Выбор протокола для общения фронтенда и бекенда Бинарный протокол (MMP, …) Текстовый протокол (HTTP, SMTP, …) XML протокол
Спасибо за внимание Пишите на по любым