Пережить «Черную пятницу»: как подготовить сервис к наплыву посетителей

Советы руководителя направления администрирования Selectel.

В 2017 году в онлайн-магазине «М.Видео» во время «Черной пятницы» и последовавших выходных трафик возрос почти в два раза.

Сервис не всегда готов к такой нагрузке, так как у каждой ИТ-инфраструктуры есть своя «точка кипения». Из-за возрастающей активности покупателей сервис может дольше обрабатывать запросы пользователей, работать с ошибками или вовсе отключиться.

Руководитель направления администрирования Selectel Антон Балакирев для блога компании на vc.ru подготовил инструкцию по подготовке инфраструктуры компании к наплыву посетителей в период распродаж.

Антон Балакирев
Антон Балакирев

Шаг 1. Спрогнозировать нагрузку

Начать подготовку инфраструктуры лучше со стресс-тестирования. С его помощью можно узнать максимальное количество запросов, которое может одновременно обслужить интернет-магазин.

Для определения максимально допустимой нагрузки подойдет «Яндекс.Танк» — генератор десятков тысяч HTTP-запросов в секунду. В официальной документации сервиса подробно описано, как провести нагрузочное тестирование на собственном продукте.

Посещаемость сайтов-агрегаторов «черной пятницы» в 2017 году SimilarWeb
Посещаемость сайтов-агрегаторов «черной пятницы» в 2017 году SimilarWeb

Как правило, интернет-магазин состоит из нескольких модулей — например, база данных, веб-сервер, система кэширования. Каждый из них нуждается в различных типах и объемах ресурсов. Поэтому при анализе нагрузки нужно снимать не просто показатели отклика всего проекта, но и показатели потребления ресурсов с разных модулей: скорость ввода-вывода дисков, процессорное время, память. Нужно определить модули и узлы системы, которые являются «бутылочными горлышками» — это и будут потенциальные точки для будущего масштабирования.

Для прогнозирования предполагаемой нагрузки на магазин в «Черную пятницу» нужно проанализировать план продаж в период акции и исторические данные по конверсии. Здесь важно учесть все запланированные активности по привлечению клиентов — рассылки, рекламные кампании, публикации в соцсетях. Например, одна рассылка на 10 тысяч клиентов при конверсии 10% в первый час приводит к открытию тысячи сессий в час, а 10 рассылок по тысяче человек с интервалом в один час приводят к открытию 100 сессий в час.

Пример подобного расчета можно прочитать в статье «Методология расчета нагрузки».

Теперь, когда есть данные о прогнозируемых и максимально допустимых нагрузках на сервис, можно оценить потенциальные риски. Если прогноз больше, чем 80% от результата нагрузочного теста, необходимо выделить дополнительные ресурсы.

Шаг 2. Адаптировать ресурсы под нагрузку

Выявив потребность в дополнительных ресурсах, можно приступить к масштабированию инфраструктуры. У компании есть два варианта, в зависимости от архитектуры магазина.

Вариант 1. Вертикальное масштабирование

Решение подойдет, если есть уверенность в прогнозе продаж и если архитектура сервиса позволяет увеличить количество обслуживаемых сессий за счет увеличения мощности сервера. Этот процесс часто называют вертикальным масштабированием.

Когда инфраструктура уже находится в облаке, для вертикального масштабирования достаточно нажать пару кнопок в панели управления, выбрав нужное количество процессорных ядер, памяти, дискового пространства. В Selectel, например, по такому принципу работает «Виртуальное приватное облако» и «Облако на базе VMware».

Изменение конфигурации виртуальной машины в VPC

Если речь идёт о физическом сервере, то вертикальное масштабирование означает переезд на более мощное оборудование. В Selectel серверы готовых конфигураций предоставляются за пару часов, сборка сервера на заказ чаще всего занимает около пяти рабочих дней.

Вариант 2. Горизонтальное масштабирование

При горизонтальном масштабировании количество обслуживаемых сессий увеличивают путем добавления новых серверов к уже имеющимся. Однако для использования такого решения система должна уметь работать не на одном сервере, а на кластере. Это предполагает специальную архитектуру сервиса, которая использует балансировщик сети.

Балансировщик — это комплекс специальных методов для выравнивания нагрузки. В зависимости от текущей инфраструктуры сервиса горизонтальное масштабирование можно настроить несколькими способами.

  • Облако. Когда инфраструктура в облаке (например, в «Виртуальном приватном облаке» или «Облаке на базе VMware»), то создание новых виртуальных машин занимает несколько секунд. Можно создать отказоустойчивую систему, объединив виртуальные машины в разных зонах доступности в единую локальную сеть.
  • Физический сервер. «Усиление инфраструктуры» означает дополнительную покупку выделенных серверов.
  • Гибридное решение — когда часть инфраструктуры перенесена в облако. Например, на физических серверах может работать постоянная нагрузка, а в облаке с оплатой по потреблению — дополнительная нагрузка, которая возникает во время акции. Таким образом получится разгрузить основной сервер и создать резерв мощности для увеличения нагрузки.

Важное преимущество горизонтального масштабирования в простоте использования — достаточно следить за нагрузкой и добавлять новые машины в кластер. Мониторинг нагрузки удобно реализовать с помощью инструмента Zabbix, а визуализацию полученных данных — с дашбордом Grafana.

Можно избавиться от ручного мониторинга нагрузки, если добавлять новые серверы и проводить балансировку автоматически. Для этого нужно заранее написать скрипты балансировщика: настроенное ПО для балансировки нагрузки вместе с API облака дает возможность создать автомасштабируемое решение.

С помощью API облака VPC Selectel можно создавать, удалять и менять конфигурации машин (в режиме beta-тестирования также доступен Kubernetes). Стоимость необходимых ресурсов отражается при создании виртуального сервера, то есть легко можно оценить затраты на «Черную пятницу» с учетом необходимых ресурсов. Когда нагрузка возрастает, можно докупить необходимые ресурсы и оплатить их по факту.

Вариант 3. Привлечь архитекторов ИТ-инфраструктуры

Привлеченный специалист по инфраструктуре может проанализировать текущую архитектуру сервиса и подготовить план работ по её масштабированию для высоких нагрузок.

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

Шаг 3. Подготовить защиту от DDoS-атак

Во время «Черной пятницы» сайт может отключиться не только из-за наплыва покупателей, но и потому, что он столкнулся с DDoS-атакой.

Для борьбы с злоумышленниками необходимо подключить средства идентификации и защиты от DDoS. Специальный комплекс защиты в режиме реального времени сканирует и анализирует входящий трафик, определяет потенциальные атаки и блокирует их.

Для подключения средств защиты может потребоваться перенести сайт в инфраструктуру оператора, поэтому нужно уточнить этот вопрос за две-три недели до старта распродаж.

Шаг 4. Ускорить загрузку контента

Повышенная нагрузка на серверы может отразиться на скорости загрузки описания товаров и фотографий. Медленный сайт напрямую влияет на продажи — не дождавшись быстрой реакции сайта на свой запрос, пользователь просто уйдет, даже если предложение выгоднее, чем у конкурентов. Для проверки скорости загрузки страниц можно воспользоваться сервисом PageSpeed Insights.

Чтобы ускорить загрузку контента на страницах, можно подключить сеть доставки контента (Content Delivery Network, CDN). Эта географически распределенная сеть состоит из кэширующих узлов — точек присутствия, которые могут быть расположены по всему миру. Заходя на сайт во время распродажи, клиенты получат информацию не от вашего сервера, а от того, который входит в CDN-сеть и находится ближе к ним. Благодаря сокращению маршрута между сервером и пользователем данные на сайте грузятся быстрее.

Подготовиться к «черной пятнице» с помощью Selectel

Заполните форму ниже или напишите на blackfriday@selectel.ru — мы поможем привести ваши сайты и мобильные приложения в полную боевую готовность. Стоимость нагрузочного тестирования и услуги «Аудит» зависит от сложности инфраструктуры — подробности в отделе администрирования Selectel.

Оставить заявку

1111
8 комментариев

Вы аварию в облаке на Дубровке чинили полтора дня, о какой черной пятнице речь, сделайте просто чтобы работало стабильно.

2
Ответить

Дмитрий, действительно недавно в облаке произошёл программный сбой в кластере быстрых дисков двух зон. В процессе перезапуска потребовались значительные вычислительные ресурсы и перезапуск процесса восстановления состояния кластера, поэтому заняло столько времени.

Кроме плановых работ, чтобы улучшить ситуацию, сейчас мы ограничили создание новых ресурсов в зоне ru-1b, новые проекты пока размещаем в зонах ru-2b (Москва) и ru-3a (Санкт-Петербург 2), что позволяет балансировать нагрузку. Высоконагруженным сервисам рекомендуем использовать новые инстансы с локальными быстрыми дисками.

1
Ответить

Комментарий недоступен

1
Ответить

Айдар, спасибо! Я отвечаю за развитие услуг CDN в Selectel и, конечно, рекомендую CDN заказать у нас)

CDN тарифицируется по объему потребленного трафика. Соответственно, цена зависит от объема трафика, который вы ожидаете. 5 тыс.руб. в месяц — соответствует уровню трафика примерно в 4 ТБ. Но я бы советовал кроме бюджета обозначить географию, требования по скорости, надежности.
У нас есть 2 варианта услуги: Selectel (построено на основе CDN сети G-Core) и Akamai (один из крупнейших и самых развитых в мире CDN). Если проект небольшой, который работает только в РФ — то CDN Selectel подойдет для вас лучше. Напишите мне в личку или на sales@selectel.ru — посчитаем примерную стоимость под вашу задачу.

3
Ответить

Комментарий недоступен

1
Ответить

- Почему товар дешевеет?
- Акция новогодних скидок закончилась

Ответить