Главное о кейсе
Работа выполнена и сдана в срок
Бизнес-задача и ее решение
Запрограммировать сайт с функционалом интернет-магазина
Прочая информация о кейсе
«Бронницкий ювелир» — один из лидеров российского рынка ювелирных украшений.
Кроме стандартных для подобных проектов требований использовать 1С-Битрикс и синхронизировать его с 1С, были ещё несколько. Во-первых, очень большая номенклатурная база: 100 тысяч моделей, 1 миллион размеров и остатки по складам. Во-вторых, мультирегиональность: в каждом регионе свои остатки по складам (это нестандартный функционал Битрикса). И, в-третьих, всё это должно выдерживать колоссальные нагрузки: до 100 RPS (request per second) и до 60 млн. посетителей в месяц; при этом каждая страница должна генерироваться не более чем за 1 сек (TTFB — Time To First Byte).
Очевидно, что Битрикс из коробки не сможет выдать такую производительность с такой большой номенклатурой. Даже если установить его на кластер из 10 тысяч серверов. К счастью, у нас уже выработан и отлажен механизм для работы с такими большими и нагруженными интернет-магазинами на Битриксе.
У нас есть специальная программная прослойка, использующая базу данных Sphinx. Каталог товаров и фильтры не используют Битрикс (ни компоненты, ни базу данных). Вместо этого все данные в режиме реального времени переиндексируются и копируются из медленной БД Битрикса в денормализованную базу Sphinx. За счёт денормализации Sphinx имеет значительно больший объём, но это позволяет выполнять поиск по всем нужным параметрам мгновенно. При этом сложность алгоритма O(log(N)) — это значит, что время поиска практически не зависит от объёма. Фактически, Sphinx используется как кеш для быстрого чтения.
Нагрузочное тестирование показало, что сайт может работать всего на одном выделенном сервере, выдерживая заданные критерии производительности. Вот так, и никаких кластеров.
Хотя у нас ещё были требования к отказоустойчивости и надёжности. Поэтому дополнительно мы развернули второй точно такой же сервер, настроив master-slave репликацию, rsync-копирование контентных файлов и приправили всё это Cloud Flare для защиты от DDOS-атак и мгновенного переключения между серверами (не надо ждать, пока обновятся DNS).