Microsoft Corporation. Тестирование производительности Web-приложений Microsoft .NET. Пер. с англ. М.: Русская Редакция, 2003. - 352 с., ил., компакт-диск.

Вряд ли нужно кого-то сегодня убеждать в необходимости тестирования производительности Web-сайтов. Актуальность этой задачи очевидна - она связана с повышением критичности функционирования Web-узлов для компаний в условиях быстрорастущего числа обращений к ним. Столь же понятна и сложность проблемы: динамические Web-приложения обладают существенно более высоким числом взаимосвязей компонентов и возможных внутренних состояний. Традиционные методы бета-тестирования могут помочь убедиться в работоспособности тех или иных функций, но с их помощью нельзя оценить производительность при больших потоках запросов. Более того, даже анализ функционирования Web-сайта в реальных условиях не сможет сказать, каковы будут его характеристики при повышении нагрузки хотя бы в два раза (это хорошо известно из теории массового обслуживания). Нужны специальные исследования.

Рецензируемая книга написана группой специалистов (8 человек) подразделения Microsoft Application Consulting and Engineering (ACE) Team, в задачи которого входит анализ производительности наиболее загруженных Web-приложений и сайтов Microsoft (например, microsoft.com и xbox.com, относящихся к числу самых загруженных в мире). Очевидно, что этой команде есть чем поделиться с собратьями по специальности.

Название платформы .NET приведено в книге не для красного словца - акцент сделан именно на использовании новейших технологий Microsoft (тут хотелось бы обратить внимание на седьмую главу “Анализ производительности управляемого кода”, в которой приведены очень полезные сведения для всех, кто пишет программы в среде .NET Framework). Но, учитывая, что большинство пользователей еще не перешло на .NET, в целом методология может применяться как для Web-сервисов .NET, так и для Web-приложений Windows DNA. Сами испытания Web-решений проводятся с помощью специальных средств Microsoft - Application Center Test и System Monitor. Но при этом отметим, что основные положения и подходы будут интересны и тем, кто работает на других платформах.

В общем виде тестирование производительности состоит из следующих этапов:

- планирование анализа производительности;

- исполнение (создание и выполнение эффективных нагрузочных сценариев);

- анализ собранных данных для определения и устранения “узких” мест.

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

Заключительная, десятая глава посвящена описанию альтернативного подхода к оценке возможностей Web-приложений по методологии моделирования, разработанной Microsoft, - TCA (Transaction Cost Analysis - анализ стоимости транзакций). Он позволяет оценить будущие ресурсные возможности Web-приложения путем связывания стоимостей серверных ресурсов, таких, как процессор, со стоимостью типичных пользовательских операций.

Хотелось упомянуть об одном важном выводе авторов по поводу наиболее “узких” мест Web-узлов. Безусловно, производительность системы напрямую связана с мощностью аппаратных средств. Причем это те ресурсы, которые можно относительно просто и недорого наращивать. Но все же тратить деньги на них имеет смысл только тогда, когда вы уверены, что достигнута максимальная эффективность программного приложения, которая определяется не только его структурой и алгоритмами, но и качеством кода. Именно поэтому авторы обращают внимание на необходимость высокой квалификации “кодировщиков”.

Говоря о пользе тестирования производительности Web-узлов, авторы привели в первой главе любопытный пример. После 11 сентября 2001 г. в течение нескольких дней трафик на новостной сайт Microsoft был в три раза выше обычного уровня. В результате время отклика возросло до неприемлемого уровня, а Web-серверы приходилось перезагружать каждые два часа из-за критического падения объема доступной памяти. Позже было установлено, что это происходило из-за утечек памяти, которая происходила на сайте и ранее. В этой связи авторы подчеркивают - их методология позволяет заранее определить возможные проблемы при резком росте трафика. (Хотя возникает логичный вопрос - почему же она не позволила это сделать в описанном выше случае?)

В заключение нужно отметить оперативность издательства “Русская Редакция”, выпустившего русский перевод с задержкой всего в один месяц.

Версия для печати