Вы наверняка сталкивались с такой ситуацией: заходите на сайт (госуслуги, например), а он не открывается, виснет, тормозит — то есть, испытывает на прочность стрессоустойчивость пользователя. Все это — результат большой нагрузки, трафика на сайт, к которому ресурс не был готов. Такие сайты называют высоконагруженными и сегодня, когда резко возросла нагрузка на многие сайты (доставка, клиники, многие интернет-магазины) они столкнулись с такими проблемами. Этой статьей мы отвечаем на вопрос владельцев бизнеса — что нужно сделать, чтобы сайт работал при любом трафике.
С 2018 года мы развиваем и поддерживаем сайт движения Бессмертный полк , который относится к сайтам highload-класса или высоконагруженным. В 2020 г. трафик и запросы на сайт увеличились в 13,5 раз, разогнавшись до 22 000 000 просмотров страниц. Сайт работал исправно даже в пики! Ниже мы поделимся опытом, как нам это удалось.
Архитектура сайта
Что такое архитектура веб-ресурса? Это структура сайта: разделы, вложенность страниц, целевые действия пользователя, база данных, с которой работает сайт (например, каталог товаров или электронная запись в личном кабинете). Архитектура проекта начинается тогда, когда вы определяетесь, что за сайт у вас будет и зачем он нужен. Если это интернет-магазин одежды, главное — это карточка товара и каталог. Следовательно, на них и будут основные нагрузки. Затем продумываем базовые функции — корзина, сравнение, доставка, покупка. От их работоспособности зависит весь успех проекта, чтобы потом мучительно не придумывать гипотезы и отвечать на вопрос «почему пользователь бросил корзину». Да потому что покупатель устал от виснущего сайта и ушел! Следующий этап — второстепенные разделы, страницы и действия пользователей. Грамотная архитектура легко спасет даже код с ошибками, но испортить хороший код плохой архитектурой еще легче.
Сервер
Правильный выбор сервера — львиная доля успеха. Сперва давайте поговорим про количество. Для каждого сайта понятие «высокие нагрузки» свое: если в обычные дни у вас 100 пользователей и 5 покупок в день, а в черную пятницу 1000 и 50 — то это высокие нагрузки для вашего сайта, на которых начинаются сбои. Крупные высоконагруженные сайты (такие как facebook или google) с миллионным трафиком в секунду работают на сотнях серверов. Что касается качества — для высоконагруженных сайтов есть одно правило: распределение серверных мощностей необходимо там, где больше всего нагрузки. Например, вы видите, что есть проблема с почтой — не приходят или реагируют с задержкой письма. Необходима оптимизация почтового сервера!
Кстати, медленная загрузка корпоративного сайта — это в половине случаев тоже проблема с сервером. Скорее всего он не справляется и нужно менять либо тариф, либо сервер. А в оставшейся половине — это, все-таки, некачественный код.
База данных
Подгрузки, загрузки, интеграции и даже элементарный поиск — узкое горлышко и источник проблем сайтов, не готовых к нагрузкам. Именно на этих функциях и возникают сбои. Когда у одного покупателя из 10 не получается сравнить товары — это одна история, которую можно исправить личным звонком, а вот когда у 50 покупателей эта функция работает некорректно — это уже катастрофа, выраженная в финансовых убытках.
Наиболее распространенные проблемы с базой данных:
- отсутствие единых стандартов и структуры — меняется протокол взаимодействия на одной из сторон - например, у Instagram и вся интеграция ломается;
- человеческий фактор — администраторы или пользователи с ошибкой вносят контент и поиск его не идентифицирует;
- множественность баз — для обработки контента сайт обращается к разным базам данных, на что требуется дополнительное время и мощности, в итоге сайт виснет;
- недостаточная мощность или пропускная способность базы данных — когда она не может обработать все входящие соединения максимально быстро.
Масштабируемость
При росте трафика на сайт пропорционально растет и количество запросов. Так, например, если трафик на moypolk вырос до 2 000 000 пользователей за несколько дней, то просмотры страниц выросли до 22 000 000. Следовательно, выросли и объемы ресурсов, которые необходимы для обслуживания сайта. Главная задача разработчиков в таком сценарии — спрогнозировать рост активности на сайте и разработать план по быстрому развертыванию дополнительных мощностей. К слову, с 1 по 10 мая наша команда работала 24/7, чтобы сайт движения «Бессмертный полк» работал «без сбоев» на юбилей победы.
Высоконагруженные сайты — это очень популярные сайты, которые быстро наращивают аудиторию. Если трафик на сайте растет в 3, 4, 5 раз и сайт не выдерживает — поздравляем, у вас высоконагруженный сайт.
С одной стороны, это здорово, ведь каждый ресурс стремится к большому количеству посетителей. С другой, это риски того, что из-за сбоев цель посещения сайта не будет достигнута и пользователи уйдут недовольными. Поэтому такие сайты нуждаются в постоянном техническом контроле и развитии.
Так, при работе над сайтом Бессмертного полка, трафик которого всегда растет к майским праздникам, наша команда в течение всего года проводит большую подготовительную работу по его оптимизации и внедрению новых решений, благодаря которым сайт выдержал рост нагрузок в 13,5 раз.