Перейти к содержимому

Continuous Delivery и анализ производительности приложения

Последнее время я был очень занят работой по поддержке наших клиентов и поэтому просто не было времени, чтобы писать в блог. Однако, система доставки и интеграции тем временем всё-таки развивается и активно используется нами. Хочу рассказать о сравнительно свежих обновлениях, добавленных в процедуру доставки веб приложений.
Каждая доставка веб-приложения теперь завершается двумя новыми проверками:

  1. Анализ домашней страницы (и любых дополнительный страниц) приложения при помощи webpagetest'а
  2. Поиск неработающих ссылок в веб-приложении

Анализ страниц приложения при помощи Webpagetest.

Для анализа страниц используется приватный инстанс Webpagetest'а, развернутый в в Восточной Европе (для того, чтобы находиться как можно ближе к нашим приложениям и соотвественно, к нашим потребителям). Для того, чтобы сэкономить бюджет, инстанс (состоящий из двух машин на данный момент) выключается на ночь при помощи способа, описанного тут - http://dobryak.org/azure-teamcityavtomaticheskoe-vklyuchenievyklyuchenie-prilozhenij/ . В конце доставки веб-приложения, после того, как Wget пробежал по страницам первого уровня для его "оживления",  запускает специальный target файл при помощи MsBuild. В этом файле описан вызов C# функции, которая при помощи Edge.js вызывает .js приложение https://github.com/marcelduran/webpagetest-api. Так как процедура тестирования занимает довольно длительное время, задачи тестирования и обработки результатов вызываются параллельно. Результаты тестирования и сравнения с предыдущей успешной добавляются в емейл и записываются в статистические данные билда в Teamcity (собственно говоря, и является хранилищем наших данных для анализа). Как было отмечено выше, помимо анализа домашней страницы приложения у билд-инженера есть возможность добавить любые страницы веб приложения для данного анализа в настройках билда в Teamcity.

Поиск неработающих ссылок в веб-приложении

Изначально, для решения этой задачи я планировал использовать Wget, но в итоге отказался в пользу Linkchecker, так как последний позволяет проводить проверку на валидность email и ftp ссылок, имеет более высокую скорость работы, умеет выводить результаты проверки в XML/CSV/SQL/sitemap формате. По умолчанию, если иное не задано в настройках билда, мы сканируем сайт на два уровня вглубь по ссылкам. Также, как и анализ страниц Webpagetest'ом, задачи по сканированию запускается параллельно, что позволяет ускорить время анализа. Количество найденных сломанных ссылок добавляется в email отчет и сохраняется для последующего статистического анализа. В email отчет также добавляются все найденные сломанные ссылки, чтобы разработчики и владельцы приложения могли реагировать и вносить необходимые исправления (если это возможно).