Разработка Продвижение сайтов. Что-то пошло не так: как подготовить сайт к резкому росту трафика.

Материал будет полезен владельцам интернет-сервисов, руководителям проектов, продуктовым менеджерам и ИT-директорам. В каждом шаге обозначены участники процесса и их роли.

Массовый переход в онлайн из-за карантина привел к повышенной нагрузке на многие интернет-ресурсы.

В компании Netflix сообщили о совокупном увеличении трафика на 30–50% по сравнению с обычным пиковым в выходные дни.
Стриминговая платформа Amazon Twitch всего за две недели выросла на 33%, с 33 млн пользователей на 8 марта 2020 года до 43 млн на 22 марта.
На видеоплатформе YouTube в марте был отмечен рост числа пользователей в десктопной версии на 15%.

Чтобы интернет-провайдеры смогли выдержать нагрузки, Евросоюз призвал стриминговые платформы прекратить показывать видеоконтент в высоком разрешении во избежание сбоев.

Российские компании также отметили увеличение нагрузок на свои сервисы. Увеличился трафик и у сервисов доставки продуктов: онлайн-гипермаркет «Утконос» отметил рост в 2,5 раза, сайт «Перекрестка» — в два раза.

Проблемы ресурсов при повышенной нагрузке

Чаще всего при увеличении нагрузок на свои интернет-ресурсы компании сталкиваются с такими типовыми проблемами, как:

загрузка контента у посетителей;
частичный или полный отказ сервиса.

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

Настраиваем систему мониторинга

Если ваш сайт начал работать медленно из-за высокой нагрузки (множества посетителей на нем), то нужно понять, какие разделы не справляются и почему. Первый шаг — разверните и настройте систему мониторинга сетевой инфраструктуры.

Такого рода мониторинг позволяет технической команде:

 

  • контролировать состояние сайта;
  • анализировать использование им ресурсов в реальном времени;
  • настроить автоматическую систему оповещений о возможных сбоях.


Существует множество в том числе свободно распространяемых систем мониторинга. Наиболее популярные из них:

Zabbix,
Nagios,
Prometheus,
Munin.


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

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

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

Проводим мониторинг уровня приложения

Представьте, что пользователь не может получить доступ к информации по счету после неудачного обновления банковского приложения. Вместо ожидаемого результата он видит красиво сверстанную страницу со словами «что-то пошло не так».

Чтобы понять и структурировать причины сбоев в бизнес-логике приложения, можно использовать специальные системы мониторинга ошибок работы сайта, например Sentry.io.

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

Проводим испытания

Разные разделы (функциональные модули) сайта могут вести себя по-разному при одних и тех же нагрузках. Например, страница с каталогом товаров при обращении к ней 100 пользователей в секунду будет отображаться быстро и корректно, а вот страница оформления заказа будет тормозить или вовсе выдавать ошибку.

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

Чтобы не мешать пользователям сайта, тестировщики, системные администраторы и аналитики должны проводить нагрузочное тестирование. Для его организации существует множество инструментов — от простых утилит, например AB и Seige, до более продвинутых, например Apache JMeter.

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

Оцениваем скорость загрузки контента

Для оценки скорости загрузки сайта можно использовать сервис Google PageSpeed Insights. Он покажет вам набор метрик, таких как скорость появления первого контента при загрузке страницы, скорость полной загрузки страницы, индекс скорости загрузки и др. Сервис пояснит значение каждой метрики.

Оптимизируем ваш сервис

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

Начинаем с оптимизации backend-части

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

Приведу несколько примеров возможных проблем и подскажу, кто и как должен их решить.

Проблема. Замедление работы сайта связано со взаимодействием со сторонними внешними или внутренними сервисами, например со службами email-рассылки или системами эквайринга и внутренними системами учета.

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

Проблема. При обработке больших массивов данных происходит излишнее потребление ресурсов. Это может быть связано с неоптимально написанным кодом модулей приложения.

Решение. Необходимо проанализировать применяемые алгоритмы и подходы, а также проверить код — это работа для старших backend-разработчиков и архитекторов.

Проблема. Обнаружены неполадки на уровне взаимодействия сайта с системой управления базами данных (СУБД).

Решение. Необходимо задействовать разработчиков и администраторов баз данных, чтобы оптимизировать их структуру и логику работы SQL-запросов.

Оптимизируем frontend-часть

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

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

На данном этапе необходимо:

оптимизировать форматы и качество изображений, стилей и сценариев сайта;
переработать браузерную часть сервиса;
вместе с разработчиками оптимизировать реализацию запросов информации и получения ответов от сервера.

Чтобы оптимизировать контентную составляющую, такую как изображения или постепенное появление интерактивных элементов страниц, необходимо использовать системы управления сайтом (CMS). При использовании CMS ваш контент-менеджер может самостоятельно управлять медийными и интерактивными материалами сайта без привлечения frontend-разработчика.

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

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

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