Нагрузочное тестирование под ключ с Yandex Load Testing
Как быстро и удобно проводить нагрузочное тестирование и анализ производительности с помощью облачного сервиса Yandex Load Testing.
10 июня 2024 г.
10 минут чтения
Любая компания, которая владеет высоконагруженным сервисом, стремится сделать его стабильнее в штатном режиме и заранее подготовить к пиковым нагрузкам или смене инфраструктуры. Для таких задач используется набор инструментов: генератор нагрузки, модуль визуализации и анализа, базы данных для хранения результатов. Это могут быть как бесплатные опенсорс‑решения, так и комплексные сервисы под ключ для полного цикла нагрузочного тестирования. К последнему варианту относится облачный сервис Yandex Load Testing, с помощью которого можно выстроить процесс тестирования любой сложности и интенсивности.
Yandex Load Testing решает три главные задачи нагрузочного тестирования:
проведение теста;
анализ полученных результатов;
хранение данных для сравнения.
Подробнее об инструменте экосистемы Yandex Cloud для создания генераторов нагрузки в привычном интерфейсе платформы, проведения тестирования и формирования отчётов мы расскажем в этой статье.
Нагрузочное тестирование проводят, чтобы проверить стабильность работы приложения или сервиса и их отказоустойчивость при повышенной нагрузке. То есть узнать, способны ли они нормально работать при целевой нагрузке и не «упадут» ли, если она неожиданно повысится.
Использовать нагрузочное тестирование можно по‑разному. Вот несколько сценариев, которые применяют компании в e‑com, финтех‑направлении, производстве, медиа и других отраслях:
Подготовка нового сервиса к запуску. Когда надо убедиться, что он будет стабильно работать при разных нагрузках.
Выпуск нового релиза. Когда надо проверить, что новая версия приложения не потеряла в производительности.
Смена программного или аппаратного стека. Например, замена серверного оборудования с процессором Intel на AMD или перенос приложения из локальной инфраструктуры в облако.
Подготовка к сезону. Если на сервис есть сезонный спрос или нужно подготовиться к разовой пиковой нагрузке. Например, к распродаже в онлайн‑магазине: надо убедиться, что сервис не перестанет работать при большом количестве покупателей.
Выстраивание стандартного процесса разработки приложения с обязательным тестированием производительности.
Смена облачной платформы. Если надо выполнить миграцию сервиса в другое публичное облако и заранее убедиться, что в новой инфраструктуре приложение будет работать так же быстро, как в исходной.
Во всех сценариях важна не только атака приложения запросами, но и сбор полученных результатов, их анализ и хранение.
С помощью анализа результатов тестирования можно найти слабые места информационной системы, которые приводят к отказу. Кроме того, анализ помогает увидеть тренды производительности — в какой момент она начинает снижаться — и определить, какие ресурсы нужны (например, для поддержания скорости).
Хранение данных позволяет сравнивать результаты тестирований, полученных в разное время, на разных платформах, с разными настройками и другими параметрами. Так можно выбирать оптимальный релиз или самую эффективную платформу для размещения приложения.
Все эти сценарии нужны для одной глобальной цели — обеспечить безотказную работу приложений и сервисов, чтобы пользователи, клиенты, покупатели или заказчики остались довольны, а предприятие не несло убытки от простоя.
Например, белорусская компания RocketData, разработчик SaaS‑платформы управления онлайн‑присутствием и репутацией бренда, использует Yandex Load Testing, чтобы рассчитывать частоту запросов к кластеру на стадии подготовки к производству. Компания перенесла все продукты и данные в Yandex Cloud и смогла масштабировать проект за счёт использования облачных ресурсов, ускорить работу и снизить количество инфраструктурных инцидентов. Подробнее о кейсе RocketData — в нашем блоге.
К базовым инструментам тестирования можно отнести генераторы нагрузки Apache JMeter, Pandora и Phantom. Они предназначены для эмулирования нагрузки на сервис согласно заданным параметрам. Это опенсорс‑решения: их можно самостоятельно установить, настроить и использовать. Установка доступна как в локальной инфраструктуре, так и в любом из публичных облаков. Для анализа результатов (изучения логов, переноса в таблицы и ручной визуализации) не обойтись без навыков администрирования и разработки.
Можно выбрать готовое облачное решение:
Нагрузочное тестирование Azure предлагает полный набор инструментов, включая агенты тестирования, модули анализа и дашборды для визуализации данных. Минусы: высокая стоимость решения Azure и размещение на зарубежных серверах, что влечёт за собой труднодоступный сервис для российских компаний, среднего и малого бизнеса.
Нагрузочное тестирование Distributed Load Testing от AWS. Не готовое коробочное решение, а набор инструкций, методик и скриптов технологий AWS и открытого ПО для развёртывания внутри облака.
Универсальным решением может стать Yandex Load Testing — облачный сервис нагрузочного тестирования и анализа производительности.
В архитектуре решения два основных блока: виртуальные машины с генераторами нагрузки и облачный сервис для управления тестами и анализа результатов. Настроить параметры тестирования можно через форму или с помощью конфигурационного файла.
От числа тестируемых сервисов и необходимой нагрузки зависит количество виртуальных машин — агентов — с заданной конфигурацией и предустановленным программным обеспечением генератора нагрузки (Pandora и Phantom).
Итоговая стоимость использования Yandex Load Testing складывается из трёх статей расходов:
Время выполнения тестов. Первые 50 часов в месяц не тарифицируются, а их обычно достаточно для завершения работы.
Хранение результатов тестов. Результаты 600 часов тестирования хранятся бесплатно.
Виртуальные машины с агентами. Оплачивается только время работы машины и объём диска. Конфигурация базового агента: vCPU 2, память — 2 ГБ, диск — 15 ГБ, может быть остановлен сразу после завершения тестирования. Таким образом, стоимость будет складываться только из затраченного времени работы виртуальной машины и размера виртуального диска.
Чтобы подробнее познакомиться с задачами нагрузочного тестирования и их решением с помощью Yandex Load Testing, рекомендуем посмотреть наши материалы:
Сервис нагрузочного тестирования Yandex Load Testing — это простой и удобный инструмент для повышения надёжности работы информационных сервисов и приложений. С его помощью можно провести тестирование, проанализировать результаты и сохранить данные для сравнения.
Разобраться с настройкой сервиса можно без специальных навыков или квалификации — по документации. А модель тарифов с существенным фритиром сэкономит бюджет проекта.