Сайт не работает, или инструкция как пережить рост трафика в 13,5 раз

Вы наверняка сталкивались с такой ситуацией: заходите на сайт (госуслуги, например), а он не открывается, виснет, тормозит — то есть, испытывает на прочность стрессоустойчивость пользователя. Все это — результат большой нагрузки, трафика на сайт, к которому ресурс не был готов. Такие сайты называют высоконагруженными и сегодня, когда резко возросла нагрузка на многие сайты (доставка, клиники, многие интернет-магазины) они столкнулись с такими проблемами. Эта статья ответ на вопрос владельцев бизнеса — что нужно сделать, чтобы сайт работал при любом трафике.

С 2018 года моя команда развивает и поддерживает сайт движения Бессмертный полк (moypolk.ru), который относится к сайтам highload-класса или высоконагруженным. В 2020 г. трафик и запросы на сайт увеличились в 13,5 раз, разогнавшись до 22 000 000 просмотров страниц. Сайт работал исправно даже в пики. Ниже мы поделимся опытом, как нам это удалось.

1. Архитектура сайта

Что такое архитектура веб-ресурса? Это структура сайта: разделы, вложенность страниц, целевые действия пользователя, база данных, с которой работает сайт (например, каталог товаров или электронная запись в личном кабинете). Архитектура проекта начинается тогда, когда вы определяетесь, что за сайт у вас будет и зачем он нужен. Если это интернет-магазин одежды, главное — это карточка товара и каталог. Следовательно, на них и будут основные нагрузки. Затем продумываем базовые функции — корзина, сравнение, доставка, покупка. От их работоспособности зависит весь успех проекта, чтобы потом мучительно не придумывать гипотезы и отвечать на вопрос «почему пользователь бросил корзину». Да потому что покупатель устал от виснущего сайта и ушел! Следующий этап — второстепенные разделы, страницы и действия пользователей. Грамотная архитектура легко спасет даже код с ошибками, но испортить хороший код плохой архитектурой еще легче.

2. Сервер

Правильный выбор сервера — львиная доля успеха. Сперва давайте поговорим про количество. Для каждого сайта понятие «высокие нагрузки» свое: если в обычные дни у вас 100 пользователей и 5 покупок в день, а в черную пятницу 1000 и 50 — то это высокие нагрузки для вашего сайта, на которых начинаются сбои. Крупные высоконагруженные сайты (такие как facebook или google) с миллионным трафиком в секунду работают на сотнях серверов. Что касается качества — для высоконагруженных сайтов есть одно правило: распределение серверных мощностей необходимо там, где больше всего нагрузки. Например, вы видите, что есть проблема с почтой — не приходят или реагируют с задержкой письма. Необходима оптимизация почтового сервера!

Вот как была устроена серверная инфраструктура сайта moypolk.ru, когда количество пользователей на сайте выросло до 15 000 в секунду:

*CDN (Content Delivery Network) — это географически распределённая сетевая инфраструктура, которая обеспечивает быструю доставку контента пользователям веб-сервисов и сайтов. Входящие в состав CDN cерверы географически располагаются таким образом, чтобы сделать время ответа для пользователей сайта/сервиса минимальным. По факту это тысячи серверов, которые обрабатывают и мгновенно выдают статичный контент: картинки, аудиозаписи, текстовую информацию.

Кстати, медленная загрузка корпоративного сайта — это в половине случаев тоже проблема с сервером. Скорее всего он не справляется и нужно менять либо тариф, либо сервер. А в оставшейся половине — это, все-таки, некачественный код.

3. База данных

Подгрузки, загрузки, интеграции и даже элементарный поиск — узкое горлышко и источник проблем сайтов, не готовых к нагрузкам. Именно на этих функциях и возникают сбои. Когда у одного покупателя из 10 не получается сравнить товары — это одна история, которую можно исправить личным звонком, а вот когда у 50 покупателей эта функция работает некорректно — это уже катастрофа, выраженная в финансовых убытках.

4. Масштабируемость

При росте трафика на сайт пропорционально растет и количество запросов. Так, например, если трафик на moypolk.ru вырос до 2 000 000 пользователей за несколько дней, то просмотры страниц выросли до 22 000 000. Следовательно, выросли и объемы ресурсов, которые необходимы для обслуживания сайта. Главная задача разработчиков в таком сценарии — спрогнозировать рост активности на сайте и разработать план по быстрому развертыванию дополнительных мощностей. К слову, с 1 по 10 мая наша команда работала 24/7, чтобы сайт движения «Бессмертный полк» работал «без сбоев» на юбилей победы.

Высоконагруженные сайты — это очень популярные сайты, которые быстро наращивают аудиторию. Если трафик на сайте растет в 3, 4, 5 раз и сайт не выдерживает — поздравляем, у вас высоконагруженный сайт. С одной стороны, это здорово, ведь каждый ресурс стремится к большому количеству посетителей. С другой, это риски того, что из-за сбоев цель посещения сайта не будет достигнута и пользователи уйдут недовольными. Поэтому такие сайты нуждаются в постоянном техническом контроле и развитии. Так, при работе над сайтом Бессмертного полка, трафик которого всегда растет к майским праздникам, наша команда в течение всего года проводит большую подготовительную работу по его оптимизации и внедрению новых решений, благодаря которым сайт выдержал рост нагрузок в 13,5 раз.

33
Начать дискуссию