Как интернет-магазину пережить сезон пиковых нагрузок
Чек-лист для подготовки IT-инфраструктуры и специальные предложения от Selectel.
Праздники и сезонные распродажи — время пиковых нагрузок не только на отдел продаж, но и на инфраструктуру. Представьте, что в приложении или на сайте вашего магазина вдруг пропали изображения или элементы интерфейса. Как быстро потенциальный клиент сбежит к конкуренту? Возможно, быстрее, чем вы успеете прочитать это предложение.
В статье по шагам разберем подготовку к пиковой нагрузке, которая позволит избежать остановку сайта и ключевых систем. В конце — пара кейсов наших клиентов.
Шаг 1: Проведите исследование
- Оцените текущую нагрузку и ежедневную норму трафика. Проанализируйте, какую максимальную нагрузку выдерживает ваша инфраструктура.
- Посмотрите аналитику прошлых лет и попробуйте спрогнозировать, насколько может вырасти нагрузка во время распродажи.
- Проведите тестовые продажи на сайте, в приложении и в мобильной версии, чтобы убедиться, что вся воронка функционирует должным образом.
- Определите, хватит ли мощностей. Проведите нагрузочное тестирование, обратите внимание на скорость работы сайта и загрузки страниц.
- Узнайте, есть ли сотрудники с компетенциями, необходимыми для масштабирования. Если нет, обратитесь за помощью к провайдеру.
Шаг 2: Позаботьтесь о гигиене
Выполнение пунктов этого блока должно быть рутинной задачей системного администратора и разработчиков компании. Если у вас так и есть, смело переходите к следующему шагу. Если нет — подумайте, как сделать эту практику регулярной.
- Оптимизируйте приложение или сайт: почистите код, фронтенд и бэкенд от лишних сущностей, которые могут привести к торможению загрузки страницы сайта или работы сервиса. Например, от лишних пробелов, встроенных стилей, пустых строк и ненужных комментариев.
- Настройте систему восстановления из бэкапов с минимальным даунтаймом (0-2 секунды).
- Возможно, стоит привести в порядок SEO. Сезонные распродажи — хороший повод показать поисковикам, что пользователи находят на вашем сайте необходимые товары и ответы на свои запросы.
Шаг 3: Подготовьте инфраструктуру к масштабированию
Масштабирование бывает двух типов — вертикальное или горизонтальное. При вертикальном растет производительность существующей инфраструктуры — число машин не меняется, мощнее становятся их внутренние характеристики. При горизонтальном масштабировании нагрузка распределяется между возросшим количеством машин, их характеристики могут оставаться прежними.
Пропишите требования для одного или для обоих типов масштабирования. Для горизонтального укажите, какая нужна новая инфраструктура. Для вертикального — как изменить комплектацию существующих серверов.
Обеспечьте надежное хранение данных
Подготовьте запасной план на случай проблем во время масштабирования или полного отказа систем. Вы должны понимать, где хранится резервная копия, в каком случае выполнять восстановление из бэкапа, а также кто будет исполнителем recovery-операции и какое время потребуется на выполнение бэкапа. Процедуру восстановления рекомендуется регулярно отрабатывать.
Чтобы не полагаться только на внутренние ресурсы и в условиях плавающей нагрузки иметь под рукой «резиновый диск», рекомендуем использовать объектное хранилище.
Позаботьтесь о быстрой загрузке контента
Если ваш сервис используют клиенты из разных регионов и даже стран, есть смысл подключить CDN.
Content Delivery Network (CDN) — это группа особым образом настроенных серверов, расположенных в разных геоточках. Серверы выступают в качестве узлов, которые позволяют ближайшим пользователям быстро загружать контент. Таким образом, разветвленная сеть CDN с расположенными неподалеку серверами позволяет значительно сократить время загрузки удаленных сайтов. Подробнее эта технология описана в статье CDN: что такое и как работает
Благодаря CDN пользователям из Владивостока не нужно ждать ответа от сервера, расположенного в Москве. Контент загрузится на ближайший к нему сервер, и данные будут запрашиваться оттуда.
Подумайте про непредвиденные случаи
Убедитесь, что системы мониторинга работают в штатном режиме и у всех влияющих на ситуацию сотрудников есть доступ к инфраструктуре. Важно иметь возможность в режиме реального времени отслеживать состояние сайта или приложения и быстро реагировать на возможные отклонения.
Дополнительно подготовьте сценарий вывода из эксплуатации дополнительных мощностей.
Шаг 4: Не теряйте бдительность
Предварительная подготовка завершена, переходим к активным действиям. Для этого:
- Докупите необходимые мощности (согласно плану) или оптимизируйте работу текущей инфраструктуры.
- Не расслабляйтесь во время повышенного наплыва покупателей — будьте готовы перейти к плану «Б» и оперативно решать внештатные ситуации.
- Мониторьте ситуацию и следите за корректностью работы всех узлов. В такие периоды даже короткий простой может дорого стоить.
Шаг 5: Вернитесь к прежним нагрузкам
После снижения нагрузки выведите из эксплуатации избыточные мощности, чтобы не переплачивать за инфраструктуру.
Если не хотите возвращаться к нашему чек-листу перед следующей распродажей, подумайте об автоматизации процессов. Например, с облачными базами данных и Managed Kubernetes, не придется больше думать о масштабировании. Ресурсы этих продуктов увеличиваются автоматически, как только у вас повышается нагрузка — вы платите только за используемые мощности.
Managed Kubernetes также позволяет экономить на собственной команде DevOps-инженеров.
От теории к практике: кейсы наших клиентов
Кейс №1: продуктовый ретейлер
Задача
Справиться с большим потоком покупателей перед Новым годом.
Проблемы
- Ограниченное место на локальных системах хранения. Существующая инфраструктура не справлялась с объемом данных, особенно в пиковые периоды.
- Плавающие нагрузки на сеть. Сотни тысяч устройств и мобильных приложений по всей стране создавали непредсказуемые нагрузки, что могло привести к сбоям в работе сайтов и приложений.
- Контент в любой момент может стать недоступен. Отсутствие изображений продуктов или элементов интерфейса напрямую влияло на пользовательский опыт и могло привести к потере продаж.
Решение
- Облачное объектное хранилище. Этот инструмент позволил ретейлеру гибко управлять объемом данных в зависимости от текущих потребностей, устранив ограничения локальных систем.
- Сеть доставки контента (CDN). Внедрение геораспределенного CDN обеспечило быстрое и надежное предоставление контента пользователям из разных регионов, а также снизило нагрузку на основные серверы и предотвратило возможные сбои.
- Мониторинг и резервирование: Компания интегрировала системы мониторинга сервисов Selectel в свою инфраструктуру и планирует резервировать критически важные сервисы для повышения отказоустойчивости.
Результат
- Стабильная работа при переменных нагрузках. Ретейлер смог обеспечить непрерывную работу своих сервисов независимо от колебаний нагрузки и географического распределения запросов.
- Улучшенный пользовательский опыт. Быстрая загрузка ресурсов и стабильность сервисов повысили удовлетворенность клиентов и конверсию в продажи.
- Оптимизация затрат и ресурсов. Использование облачных решений оказалось более экономичным и эффективным по сравнению с расширением собственной инфраструктуры.
Кейс №2: спортивная команда
Задача
У наших клиентов, известной спортивной команды, в дни продажи билетов на крупные матчи нагрузка на сайт росла в 4-5 раз. Они искали решение, которое бы позволило масштабировать производительность в дни массового спроса с минимальными расходами.
Процесс
Мы подготовили решение на базе облачной платформы Selectel. Использовали сервис Managed Kubernetes и добавили DevOps-процессы от нашей команды:
- провели анализ приложений и рассказали, как адаптировать их к Managed Kubernetes;
- настроили процесс разработки в соответствии с требованиями новой платформы.
Результат
Даже с учетом расходов на DevOps, затраты заказчика стали на 40% ниже, чем при постоянном использовании требуемых при расчетной нагрузке мощностей.
Хотите подготовиться к пиковому сезону заранее? Обратите внимание на наши специальные предложения, которые не привязаны ко времени года, но позволяют сэкономить и сохранить спокойстивие даже в самую напряженную пору.