Промо-акция глазами DevOps. Как не потерять миллионы из-за наплыва пользователей
Вечер пятницы. Андрей, DevOps в крупном интернет-магазине одежды, возвращается домой после трудной рабочей недели и и раздумывает, какой фильм посмотреть перед сном. Едва он переступил порог дома, раздаётся звонок:
– Андрей, у нас сайт упал!
– Что случилось?
– Мы запустили промо-акцию, народ повалил на сайт и положил его. Уже полчаса ни одна страница не грузится. Нужно срочно всё починить!
Андрей смотрит статистику нагрузки и видит, что она выросла более чем в 10 раз всего за несколько часов.
Сайт не был к этому готов. Время простоя составило более 24 часов, а компания потеряла более пятнадцати миллионов рублей.
Итак, ошибка на поверхности – отдел маркетинга не предупредил ИТ-отдел о запуске промо-акции.
Давайте представим, что Андрея уведомили заранее. Что ему делать, чтобы подготовить сайт компании к резкому росту трафика?
Что важно понимать про пиковые нагрузки
Чаще всего во время распродаж или других активностей всё происходит по более-менее схожему сценарию.
- Площадка за неделю до старта начинает “прогрев” аудитории – выпускает рекламу в различных каналах. Анонсируется точная дата начала, например, с 4 ноября ежедневно выходит напоминание“14 ноября – чёрная пятница! Скидки 90% на всё!”. 14 числа количество посетителей после публикации рекламного материала о промо-акции резко вырастает. За время действия промо-кампании количество посетителей может вырасти в 10 и более раз. от 40 до 80% пользователей прийдут на сайт в течение первых нескольких часов.
- Достигнув пика, трафик будет снижаться плавно довольно продолжительное время – в течение нескольких суток. Это требует поддержания производительности серверов и внимания техподдержки для решения возникающих проблем у пользователей.
- За это время могут произойти повторные всплески – пользователи делятся предложениями с друзьями, выкладывают посты в соцсети.
- Если ваши маркетологи хорошо поработали, объявление может залететь в тренды соцсетей, тогда трафика будет ещё больше.
- Сайт может стать жертвой DDoS, парсеров и прочей зловредной активности.
Главное: все происходит в течение нескольких часов или суток, далее значения трафика устаканиваются и, при отсутствии маркетинговой активности, медленно снижаются.
Что учесть при подготовке к скачку трафика
Ключевой аспект управления пиковыми нагрузками – прогнозирование трафика и его потенциального влияния на инфраструктуру. Важно убедиться, что в рамках системы обеспечиваются:
Масштабируемость, чтобы “в моменте” справляться с увеличением нагрузки без снижения производительности.
Резервирование ресурсов, которые можно задействовать в случае необходимости.
Стресс-тестирование поможет определить потенциальные узкие места и позволит заранее подготовиться к возможным проблемам.
Наиболее эффективным и выгодным инструментом для одновременной реализации всего этого без риска потери работоспособности систем – это облака:
– Оплата по факту использования
Облачные платформы часто предлагают модель оплаты по факту использования, что позволяет компаниям экономить на IT-расходах, платя только за те ресурсы, которые они фактически используют.
– Высокая доступность и надежность
Облачные провайдеры обеспечивают высокий уровень доступности и резервирования данных через географически распределенные центры обработки данных. Это минимизирует риск сбоев и повышает общую надежность системы.
– Быстрое восстановление
В случае сбоев облачные платформы могут быстро восстановить системы и данные из резервных копий, существенно сокращая время простоя.
И главное здесь – вынести в облако избыточную нагрузку. Обязательно выносим:
- DNS. Это главная мишень для DDoS, и крайне критичный элемент для функционирования системы в целом. Желательно, чтобы DNS был геораспределенным, поскольку запросы DNS существенно влияют на общее время загрузки страницы.
- Статичный контент. Он генерирует значительный объем трафика, который загружает сетевые каналы. Желательно обеспечить быструю доставку статического контента, поэтому его следует размещать на CDN, сети доставки контента. Что это и как работает – рассказывали тут.
- Readonly — копия базы данных. У маркетологов есть понятия “воронка” и “конверсия”. Если “на пальцах”, воронка — путь, который проходит клиент от момента, когда товар привлёк его внимание, до момента покупки. Конверсия — доля тех, кто прошёл этот путь до конца. Конверсия в 5% считается хорошей. На один «клик» — который надо писать в базу данных — приходится 100 чтений, которые можно спокойно вынести в большое количество копий «только для чтения»
- API, которое взаимодействует с пользователями. Особенно ту часть, которая обращена к промо-кампании.
На что ещё важно обратить внимание
Помимо переноса нагрузок в облако, важно учитывать потенциальные угрозы DDoS-атак, а также обеспечить постоянный мониторинг и управление ресурсами в реальном времени.
- Защита от DDoS-атак
Применение таких решений, как брандмауэры (firewalls), системы предотвращения вторжений (IPS), и сервисы, специализирующиеся на отражении DDoS-атак, может помочь «спрятать» вашу инфраструктуру от автоматических атак. Это включает в себя реализацию географического и IP-фильтрации для блокировки трафика из подозрительных источников, а также использование сетевых «маскировочных» технологий для скрытия реальных IP-адресов критически важных компонентов системы. Как её выстраивать – рассказывали тут.
- Мониторинг системы
Настройка мониторинга основных показателей системы является ключевой для поддержания её надежности и эффективности. Важно следить за такими параметрами, как загрузка серверов, время отклика системы, объем трафика и производительность баз данных. Использование инструментов мониторинга, таких как Prometheus, Nagios или Zabbix, позволяет в реальном времени отслеживать состояние системы и быстро реагировать на возможные проблемы. Мало того, что его надо вкрутить — это 10%. Остальные 90% — правильная настройка.
- Инфраструктура как код, IaC
Применение подхода «Инфраструктура как код» позволяет управлять инфраструктурой с помощью кода, что обеспечивает большую автоматизацию, уменьшение человеческого фактора и повышение воспроизводимости настроек. Инструменты, такие как Terraform, Ansible или Puppet, позволяют описывать аппаратные и программные ресурсы в виде кода, который можно хранить в системах контроля версий (например, Git). Это обеспечивает легкость масштабирования, обновления и восстановления инфраструктуры, а также способствует более тесной интеграции операционной и разработческой команд, так как изменения в инфраструктуре могут быть внедрены и отслежены с помощью стандартных процессов разработки ПО.
Как выбрать подходящее облако
При выборе поставщика услуг важно, чтобы он обеспечивал возможность:
- Быстро и легко масштабироваться, причем как в сторону увеличения, так и в сторону уменьшения.
- Обеспечить балансировку нагрузки.Она позволяет распределить входящий трафик между несколькими серверами или ресурсами в облаке, что предотвращает перегрузку отдельных узлов и способствует равномерному распределению рабочей нагрузки. Это улучшает общую производительность системы и снижает вероятность отказа. Кроме того, балансировка нагрузки позволяет проводить обслуживание или обновление системы без прерывания работы, так как трафик может быть перенаправлен на другие серверы во время проведения технических работ.
- Развернуть нагрузку в нескольких ЦОД. Это обеспечивает геораспределенность ресурсов, что способствует более высокому уровню доступности и минимизации рисков, связанных с физическими или локальными техническими сбоями. В случае возникновения проблем в одном ЦОД, другие могут продолжить обслуживание запросов, что обеспечивает бесперебойную работу сервисов. Также это позволяет оптимизировать время доступа для пользователей из разных регионов, сокращая задержки и улучшая общую пользовательскую оценку сервисов.
- Получить приемлемую для бизнеса стоимость услуг. О том, как посчитать ИТ-экономику – рассказывали тут.
Например, мы предоставляем облачную ИТ-инфраструктуру с опциями:
- Отказоустойчивый, георапределённый DNS
- Простой в настройке CDN
- Object Storage — S3 совместимое хранилище
- DB — полностью управляемые базы данных с возможностью прикрутить ReadOnly-реплику к существующей БД
- K8S Managed Kubernetes с опциями автомасштабирования и прочими “плюшками”
- COMPUTE – виртуалки с возможностью автомасштабирования и балансировки нагрузки
- LB – управляемый балансировщик нагрузки
- Viz – мониторинг облачной инфраструктуры с массой приложений, устанавливаемых в «один клик» – prometheus и прочие полезные штуки
- DDoS Protection – защита от DDoS
- API/Terraform — / Crossplane — провайдеры для автоматизации деплоя
- Распределенные ЦОД
И вот – снова пятница, и снова промо. Андрей смотрит перед сном «Опенгеймера» и лишь поглядывает в приложении за нагрузкой: сайт работает стабильно. А если что-то пойдет не так, специалисты CORTEL сразу всё урегулируют. В понедельник Андрей просто получит отчёт – что было и что сделали.
Узнайте больше об облачных решениях CORTEL и рассчитайте условия под запросы вашего бизнеса.