Любой компании требуется точное представление о возможностях своих программных решений, значит, руководство бизнеса должно быть хорошо информировано о том, какова производительность используемых систем и как она может меняться при тех или иных сценариях. Проведение нагрузочного тестирования обеспечит эффективное измерение производительности систем и, как следствие, предотвратит потенциальные проблемы при их работе.
Любая современная крупная компания обладает развитой ИТ-инфраструктурой, которая имеет критичное значение для поддержки и развития бизнеса. Уровень автоматизации предприятия определяется функциональностью и качеством внедряемых на нем информационных систем, поддерживающих процессы автоматизация планирования, учета, мониторинга и анализа всех основных бизнес-процессов в разрезе предприятия (ERP), управление корпоративным контентом (ECM), бизнес-аналитика (BI) и другие.
Устойчивая работа всего предприятия зависит не только от правильно выстроенных бизнес-процессов, качества программных решений и корректности внедрений, но в значительной степени от стабильной работы ИТ-систем. Используя то или иное решение, бизнесу периодически полезно задавать вопрос: «Что мы знаем о производительности системы и какие нагрузки она может выдержать?»
Если в системе то и дело возникают сбои, а ее производительности уже явно недостаточно для поддержки текущих операций, это, безусловно, требует экстренных мер. Замедление работы из-за низкой производительности может через некоторое время обернуться отказом системы, а в подобном случае компанию ждет целый ряд неприятных последствий:
Можно привести в пример печальную историю шотландского Royal Bank, где в 2012 г. произошел системный сбой. В течение трех недель 6,5 млн клиентов не могли совершать операций по своим картам, а банк испытал существенный репутационный и финансовый ущерб. Только наложенный регуляторами штраф составил гигантскую сумму — 56 млн фунтов.
Таким образом, риски связанные с недостаточной производительностью бизнес-приложений, исключительно важны. Чтобы минимизировать их, на основных этапах жизненного цикла программных решений, включая внедрение, эксплуатацию, модернизацию и интеграцию, важно проводить нагрузочное тестирование. Это поможет определить:
Отправной точкой любого проекта по нагрузочному тестированию должна выступать разработка модели тестирования. На основе анализа статистики выбираются операции, использующие основные ресурсы системы. Если система еще не внедрена, вместо статистики берут данные бизнес-прогнозов. В результате такого анализа определяются наиболее часто выполняемые операции, и исключение несущественных процессов позволяет удешевить проект и ускорить процесс оптимизации. Далее квалифицированными инженерами готовится корректная методика нагрузочного тестирования. Методика включает в себя стратегию тестирования, список тестов, критерии успешности нагрузочных испытаний, описание средств мониторинга и инструментов тестирования.
Средства эмуляции позволяют имитировать нагрузку на систему. В ходе работ по нагрузочному тестированию инженеры с помощью специализированных инструментов записывают и настраивают скрипты (программный код, имитирующий отобранные ранее бизнес-операции). Скрипты эмулируют пиковую загрузку (таких пиков у системы может быть несколько). Поскольку тестируемая система взаимодействует со множеством внешних систем, и воспроизвести весь комплекс бизнес-цепочек в тестовой среде невозможно, дополнительно создаются эмуляторы внешних систем, имитирующие их работу. При необходимости производится наполнение Базы Данных тестовыми данными с необходимой глубиной (как правило, на несколько лет вперед). Опираясь на разработанную методику, инженеры выполняют тестовые испытания. В результате измеряется производительность системы под нагрузкой, подсчитывается статистика загруженности системных ресурсов. На основе полученных данных определяется предельная нагрузка, при которой система работает стабильно, локализируются узкие места и даются рекомендации по их устранению.
Финальным этапом проекта нагрузки становится подготовка отчета, в котором для заказчика описываются результаты работы, приводится перечень обнаруженных ошибок, даются предложения по оптимизации системы.
При выполнении нагрузочного тестирования используются специализированные программные инструменты от ведущих вендоров: HP LoadRunner, Apache JMeter, IBM Performance Tester, MS Visual Studio Ultimate и другие. Выбор инструмента производится на начальном этапе путем анализа трафика между клиентом и сервером, в результате чего отбираются инструменты, которые технически смогут эмулировать клиентскую часть. Далее на основании предпочтений заказчика и возможностей инструментов определяется оптимальное решение.
В ходе внедрения бизнес-критичных систем важно оперативно выявлять проблемы с производительностью при длительной работе под прогнозируемой нагрузкой. Например, в ходе работы компании «Аплана» на проекте тестирования решения на базе SAP в одной из крупных компаний была определена максимальная производительность системы, обнаружены «узкие места» на уровне системы управления базами данных. Специалисты сформулировали необходимые рекомендации по оптимизации производительности. В частности, рекомендовано обновление конфигурации системы, предложены алгоритм балансировки для серверов приложений SAP и оптимизация транзакции для уменьшения времени отклика системы при выполнении операции создания документов.
Еще один яркий пример — нагрузочное тестирование кредитной системы, которое осуществлялось в рамках реализации коммерческим банком стратегии расширения бизнеса. В ходе этого проекта команда «Апланы» определила уровни изменения производительности с учетом прогнозируемого увеличения пользователей. В результате заказчик смог своевременно устранить потенциальные проблемы с функциональностью на основе данных о чрезвычайно ресурсоемких операциях. Программа расширения бизнеса проведена без риска отказа критичной системы.
Иногда компании осознают значимость нагрузочного тестирования лишь после того, как у них происходит массовый сбой, связанный с отказом в работе какой-либо системы, или резко снижается производительность того или иного приложения. Поэтому так важно инициировать тестирование ещё на этапе внедрения.
Опыт работы специалистов компании «Аплана» показывает, что в ИТ-департаментах крупных компаний растет уровень зрелости процессов тестирования. Так, в банках все шире распространяется практика проведения нагрузочных испытаний перед выходом каждого нового релиза в промышленную эксплуатацию.
Обеспечение качества работы информационных ресурсов — процесс постоянный. Практика регулярного нагрузочного тестирования, безусловно, поможет стабильному функционированию ИТ-инфраструктуры и придаст уверенности бизнесу.