Когда и как мы проводим нагрузочное тестирование
Для стабильной работы при пиковых нагрузках, предупреждения кризисов и учета рисков важно сохранять устойчивость IT-системы. Обеспечить ее стабильное функционирование поможет нагрузочное тестирование сайта или приложения.
Мы хотим поделиться своим опытом и рассказать, как исследуем производительность, выявляем и устраняем «узкие» места, определяем уровень отказоустойчивости системы.
Этапы проведения
Нагрузочное тестирование входит в аудит производительности системы. Сначала мы определяем цели, формулируем требуемые показатели нагрузки, выясняем проблемы. Это исследование, во время которого взаимодействуют все участники команды — разработчик, архитектор, DevOps.
Затем проводится непосредственно нагрузочное тестирование. В результате мы формируем отчет с данными о максимальной производительности, ключевых показателях, времени ответов на запросы пользователей, утилизации системных ресурсов и описанием критических ресурсов.
Пример отчета
На основе отчета мы предоставляем свои рекомендации. Следуя им, наши клиенты могут сами заняться оптимизацией производительности или доверить процесс нам.
Работы проводятся на основании выявленных проблем. Это, например, оптимизация кода, устранение «узких» мест. Список конкретных задач зависит от результатов тестирования. Также мы проводим тесты, чтобы определить эффективность этих изменений.
Разберем ситуации, когда IT-системе требуется нагрузочное тестирование.
Наплыв большого количества пользователей
Если вы готовите масштабную рекламную кампанию, планируете централизацию или объединение систем, ожидаете резкий рост спроса, IT-продукт будет испытывать наплыв клиентов. Предварительно стоит выяснить пользовательские лимиты. Для этого и понадобится нагрузочное тестирование.
Что вы получаете:
-
Определение возможностей и лимитов допустимой нагрузки
-
Выявление заранее проблемных мест
Среди наших проектов, на которых мы провели нагрузочное тестирование, стал крупнейший ресторан быстрого питания. Партнер прогнозировал увеличение мобильного трафика. Мы за две недели обеспечили стабильную работу приложения, повысив устойчивость к нагрузкам в два раза.
Спасение IT-системы в кризис
Если нагрузочное тестирование не провести заранее, продукт может не справиться с наплывом пользователей. Это наносит ущерб репутации и лояльности клиентов. Причинами могут быть нехватка аппаратных ресурсов, неоптимизированный код, устаревшее железо.
Что вы получаете:
-
Оптимизация производительности системы
-
Сохранение пользовательского трафика
-
Снижение репутационного ущерба
Для одного из наших клиентов мы решили такие проблемы после проведения рекламной акции. Из-за резкого роста пользователей возник сбой в производительности мобильного приложения. Время загрузки на устройствах увеличилось, при ответе более 1 минуты показывалось уведомление о недоступности сервера. Это вызвало недовольство пользователей, ситуация требовала экстренных мер.
Мы оперативно отреагировали на инцидент — в течение двух дней оптимизировали API-запросы и восстановили работу приложения. В итоге производительность повысилась в 15 раз.
Беспрерывная оптимизация
Бесперебойная работа не поможет продукту, если забыть о регулярных процедурах. Это может быть оптимизация кода, оптимизация работы базы данных (запросы, индексирование и другое), реже — переход на более актуальные технологии или версии, внедрение таких практик, как перенос статики на CDN серверы, использование распределенной инфраструктуры и многое другое.
В результате IT-система будет работать всегда быстро и находиться в поисковой выдаче выше, чем конкуренты.
Что вы получаете:
-
Улучшение показателей ресурса
-
Готовность к нагрузкам
-
Удержание пользователей
-
Преимущество перед конкурентами
Один из мобильных IT-продуктов, с которым мы работали, не имел серьезных недостатков, кроме низкой устойчивости к нагрузкам: долгое время отклика, ограниченное количество одновременных пользователей. Не было уверенности в стабильности системы — выдержат ли серверы рост нагрузки и как быстро восстановят работу после сбоя системы.
Наши эксперты по автоматизации тестирования проверили соответствие системы требованиям производительности. Пропускная способность оказалась низкой — производительность была ниже требуемой, а настройки лимитов и конфигурационных файлов — неоптимальными.
Во время комплексных работ мы изменили конфигурацию аппаратных средств и параметров ОС, переконфигурировали пул соединений и сервер приложений, перенастроили индексирование таблиц базы данных.
Благодаря оптимизации, с системой теперь могут работать более пяти тысяч пользователей одновременно. Пропускная способность выросла в 15 раз, а сервер стал отвечать гораздо быстрее по ключевым запросам. Мы локализовали критические ресурсы для дальнейшей оптимизации, подобрали и проверили конфигурацию сервера для стабильного функционирования приложения.
Лайфхаки для бесперебойной работы
На основе нашего опыта мы составили рекомендации для эффективной работы IT-системы:
-
Проводите нагрузочное тестирование — регулярное или перед ожидаемым ростом трафика. Это поможет определить критичные точки и составить план оптимизации.
-
Наберите опытную команду DevOps-специалистов. Внедрите мониторинг внутренних ресурсов, снимайте регулярно отчеты и контролируйте нагрузку. Например, когда на сервере закончится место или возникнут проблемы с работоспособностью, у вас будет время для предотвращения отказа системы и увеличения ресурсов.
-
Настройте автоматизацию системы приема заказов. Этот пункт важен для ритейла, где главные управленческие решения связаны с повышением качества и скорости обслуживания клиентов. IT-системы позволяют отказаться от содержания крупного склада. Например, когда ингредиенты заканчиваются, система управления закупками просто отправляет заказ поставщику.
Подробнее о нагрузке продукта на старте и других темах вы можете прочитать нашем блоге.