Описание
Мы практикуем гибкий подход к тестированию системы на каждом этапе разработки с целью снизить затраты на ее оптимизацию в дальнейшем. При анализе производительности используются не только различные виды тестирования, такие как Load, Stress, Stability, но и реализуются различные подходы, такие как Concept proof, Regular Performance Drop Analysis, Capacity Planning.
Процесс Анализа Производительности
Каждый этап анализа производительности может состоять из нескольких итераций и включает в себя:
- Детальный анализ характеристик нагрузки живой системы или их ожиданий, если система находится на стадии первичной разработки;
- Точное планирование тестирования и подготовку необходимой платформы;
- Проведение теста;
- Выявление и рекомендации по исправлению проблем;
- Повторное проведение теста при необходимости;
- Составление финального отчета для заказчика теста.
Нагрузочное тестирование (Load testing)
Нагрузочное тестирование проводится с целью убедиться в соответствии системы требованиям к производительности. Для достижения этой цели, нагрузка, подаваемая на систему во время теста, соответствует ожидаемой на рабочей системе.
Понимая, что в реальности нагрузка на рабочую систему не бывает линейной, мы разработали собственную систему, которая позволяет воспроизводить любую необходимую нагрузку, копируя реальную или предполагаемую модель до малейших подробностей и модифицировать ее, применяя коэффициенты умножения или изменяя профиль.
Стресс-тестирование (Stress testing)
Цель стресс-тестирования – проанализировать устойчивость. В этом случае, подаваемая на систему нагрузка значительно превышает нагрузку на рабочей системе или же является непропорциональной.
Стресс-тесты могут обнаруживать в системе проблемы, связанные с отказом компонентов при высоких нагрузках и поэтому являются хорошим средством подготовки реальных систем к резкому увеличению обрабатываемых потоков данных.
Тестирование на стабильность (Stability testing)
Тестирование на стабильность предполагает подачу на тестовую платформу реальной нагрузки в течение длительного периода времени. В сочетании с нашим подходом к нагрузочному тестированию, позволяет точно смоделировать поведение системы в течение рабочей недели.
Тестирование концепта
Анализ производительности на стадии разработки архитектурных решений – один из самых эффективных с точки зрения дальнейшего введения системы в эксплуатацию. Этот подход называется Тестирование концепта и проводится на самых ранних этапах разработки для того чтобы подтвердить или опровергнуть состоятельность созданного дизайна и предсказать его финальное соответствие требованиям к производительности. Для проведения такого анализа используются в основном Нагрузочное Тестирование (Load Testing) и Стресс-тестирование (Stress-testing).
Регулярный анализ отклонения производительности
Анализ производительности, проводящийся для развивающейся системы на регулярной основе позволяет вовремя обнаружить отклонения в производительности и принять необходимые бизнес решения.
Разработанная нами автоматическая система слежения за наиболее важными параметрами производительности, позволяет в любой момент обратиться к истории их изменения за всё время с момента начала проведения регулярного анализа, а графическое представление этой информации делает ее восприятие доступным не только внутренним, но и внешним заказчикам тестов.
Работающий на долгосрочную перспективу, этот подход привлекателен и тем, что не требует дорогостоящих hardware-ресурсов, точно повторяющих конфигурацию живой платформы.
Планирование предельной производительности
Предельная производительность платформы – метрика, позволяющая отвечать на стратегические бизнес-вопросы о развитии системы в перспективе – зависит от множества различных факторов: поведения конечного пользователя, сбалансированности системы, производительности аппаратной части, операционной системы и конфигурации окружения.
Анализ предельной производительности находящейся в эксплуатации платформы – одна из самых амбициозных и сложных задач в области производительности систем. Это комплексное исследование сочетающее в себе не только определение самого предела производительности и выявление узких мест системы, которые мешают увеличению этого предела, но и различные тесты на выносливость и сбалансированность системы и поиск ее оптимальной конфигурации.
Критерием, по которому определяется предел производительности системы может являться не только отказ компонента, им может быть еще и набор метрик, продиктованных бизнес-требованиями к системе, например, скорость обработки ордера или задержка в распространении системой котировки.
Регулярный анализ предельной производительности позволяет аккуратно планировать дальнейшее развитие системы с точки зрения необходимости бизнеса.
Исследование производительности
Мы понимаем, что иногда наших стандартных отлаженных процедур анализа производительности не хватает для того, чтобы ответить на все беспокоящие бизнес вопросы:
- Какое аппаратное обеспечение нужно установить, для того, чтобы система выдерживала заданную нагрузку?
- Как быстро система может восстановить свою функциональность для всех онлайн пользователей после сбоя и перезагрузки?
- Как повлияет перезагрузка отдельных компонент на доступность платформы онлайн пользователям?
- Как поведет себя платформа при кластеризации ее компонент?
Это лишь некоторые примеры бизнес-вопросов заказчиков, на которые требуется ответ для принятия правильных стратегических решений. Каждый тест, призванный ответить на подобные вопросы, разрабатывается индивидуально, с учетом системы, требований и особенностей необходимого результата.
