Разработчики постоянно имеют дело с инструментами. Многие из них стали частью повседневной жизни и уже не считаются таковыми. Например, компьютер, текстовый редактор, репозиторий исходного кода и не назовешь простым набором инструментов, это что-то большее.
Сейчас доступны бесплатные или недорогие средства разработки, которые помогают находить и устранять сложности, связанные с приложениями.
Никто не любит решать проблемы в экстренном порядке. Куда интереснее создавать какую-то новую опцию для приложения. Попробуем разобраться, как предотвращать пожароопасные ситуации.
Никто не пишет идеальные коды. Невозможно заранее предугадать непредвиденные ситуации, на то они и непредвиденные. Однако проанализировав данные о работе кода, вы сможете устранить распространенные проблемы уже на начальном этапе.
Факт: наиболее подходящий момент, чтобы узнать о наличии багов — это когда вы их, собственно, создаете.
Искать, воспроизводить и устранять дефекты на стадии производства куда сложнее. Чем раньше их удастся обнаружить, тем лучше.
Во многих приложениях существуют сложные уровни аутентификации, доступа к данным, интеграции и прочего. Не говоря уже о десятках AJAX-запросов, которые происходят в современных веб-приложениях. В общем, порой понять работу кода довольно сложно.
Благодаря специальным инструментам вы можете отслеживать запросы на поиск информации в базах данных, запросы веб-сервисов, наличие данных в кэше, разрешение и многое другое.
Скриншот Prefix (бесплатный профилировщик кода для разработчиков ASP.NET и Java ).
Существуют разные инструменты разработчика для разных языков программирования. Их функциональные возможности тоже отличаются. Для одних необходимо менять код и конфигурации, для других это не нужно.
Эти инструменты главным образом предназначены для запуска на вашей рабочей станции, хотя некоторые могут работать и на сервере.
- Glimpse (.NET).
- Miniprofiler (.NET, Ruby, Go, Node.JS).
- XRebel (Java — платный).
- Stackify Prefix (.NET, Java).
- Scout Devtrace (Ruby).
- Rack trace (Ruby).
- Zend Z-Ray (PHP — платный).
- New Relic developer mode (Ruby).
Почти все они бесплатные, за небольшим исключением.
Как только вы начнете ими пользоваться, они станут частью инструментария. С их помощью вы ответите на вопрос: «что этот программный код только что сделал?»
Содержание
Поиск багов
Инструмент Prefix высвечивает множество сведений относительно веб-запросов. При этом Prefix не меняет код.
Можно узнать, какие SQL-запросы выполняются и сколько это длится. Запрос можно скопировать и вставить в инструмент управления SQL.
Вы можете использовать этот инструмент для решения проблем запроса N + 1.
Что происходит, когда вы отправляете приложение на тестирование?
В APM-системах (мониторинг производительности приложений) присутствует легковесный профилировщик для сбора данных о пользователе, сервере, приложении. То же, что делают вышеперечисленные инструменты. APM-решения не создают большую нагрузку, их можно использовать применительно к рабочим серверам с высоким уровнем трафика.
Примеры таких инструментов: Stackify Retrace и New Relic.
Информация о производительности приложения, собранная Retrace. Логин, доступ к Redis, SQL-запросы.
На что обратить внимание во время тестирования
APM-решения предоставляют сводную отчетность обо всех ваших приложениях и серверах. Так вы сможете проанализировать и сделать вывод об их производительности. Вот, на что стоит обращать внимание:
- Медленные веб-запросы
- Повторяющиеся ошибки приложения
- Объемные и медленные SQL-запросы
- Управление зависимостями в приложении
Поиск медленных веб-запросов
К сожалению, разработка не всегда оказывается успешной. Просмотрите, сколько времени выполняются запросы. Удостоверьтесь, что эффективность соответствует ожидаемому уровню, найдите способы исправить ситуацию.
Обращайте внимание на все ошибки
Ошибки в приложении случаются по разным причинам. Иногда это незначительные помехи. Но порой они могут свидетельствовать о наличии серьезных проблем. Всегда стоит искать как новые, так и повторяющиеся ошибки. На скриншоте ниже можно видеть, что тестировщики упустили из виду процедуру, которая спровоцировала массу исключений.
Объемные и медленные SQL-запросы
Сложно узнать, насколько SQL-запросы окажутся быстрыми или медленными без фактических данных.
Эффективность зависимостей в приложении
Сегодняшние приложения, помимо простой базы данных, крайне зависимы от множества внешних сервисов. Приложения выполняют множество запросов, кэширований, организуют очередности и многое другое.
Важно понимать уровень эффективности всех этих зависимостей. На этом примере виден заметный скачок времени ответа в районе 9:45, из-за SQL-запросов по базе данных.
Инструменты разработчика для обратной связи
Бесплатные и недорогие инструменты предоставят важную информацию о приложении. APM-инструменты (Prefix или Retrace) оказываются весьма полезными.
Вы можете применять их на каждом этапе жизненного цикла — это ускорит работу команды разработчиков, увеличит качество кода и снизит риск неудачного релиза.
Как результат, у вас появится больше времени на работу с ценным софтом и меньше придется тратить усилий на плохие коды, поскольку их улучшили еще до этапа производства.