Технический аудит веб-сайта, интернет-маназина и профилирование кода

Технический аудит веб-сайта, интернет-маназина и профилирование кода

Технический аудит и профилирование кода, это такая же процедура, как тех. Осмотр автомобиля или поход к врачу. Мы делаем это если что-то случилось – по факту события или плановое – желаем знать все ли в порядке или необходима терапия.

Ваш проект

  • Медленно загружается – работает
  • Не стабильная работа и не понятны причины этой не стабильности, ваша команда разработчиков или разработчик не называют очевидных и понятных причин
  • Не было постоянной команды разработчиков или разработчики менялись время от времени, и вы не уверены, что все моменты в коде были согласованы и они надлежащего качества
  • Может ли масштабироваться – расти
  • Будет ли готов обработать – принять количество подключений – клиентов, больше, чем сейчас

Что мы делаем

Анализ кода – соответствие общепринятым стандартам, поиск ошибок, стиль кодирования

Оценка производится на базе сервиса Scrutinizer, мы получаем отчет в виде понятного графика – общая оценка кода и рекомендаций, а также список ошибок.

Анализ программного обеспечения на сервере – последние обновления, наличие уязвимостей

Очень важно поддерживать в актуальном состоянии окружение и программное обеспечение, где работает проект. Если в ПО есть уязвимости, злоумышленник может ими воспользоваться. После изучения мы создаем отчет с рекомендациями, что стоит обновить и на что обратить внимание.

Пример

 

Нагрузочное тестирование

Мы используем Apache JMeter — инструмент для проведения нагрузочного тестирования для создания большого количества запросов с помощью нескольких компьютеров при управлении этим процессом с одного из них.

Этот вид тестирования очень полезно применять с одновременным профилированием кода (см. ниже), это даст больше информации в контексте вопроса – «как будет вести себя мой веб-сайт если мы запустим рекламную компанию или если к нам придет больше посетителей, чем у нас есть сейчас, будем ли мы готовы к этому?» Исходя из полученной информации будет видно, на что вам стоит рассчитывать. В некоторых случаях мы рекомендовали пересмотреть архитектуру проекта и использовать совершенно другие технологии, т.е. абсолютно неожиданный исход и разворот на 180 градусов.

Профилирование кода

Профилирование кода выполняется специальной программой – Blackfire, через которую мы получаем информацию о работе кода по таким параметрам как:

  • Time – общее время выполнения программы/скрипта
  • CPU Time – затраченное процессорное время на выполнение кода
  • Memory – использование оперативной памяти
  • HDD (read/write) – время чтения, записи на/с жесткий диск
  • Network (Sent/ Receive) – сколько информации передается в сеть
  • HTTP (external queries/Services that use the project) – использование внешних ресурсов в коде: SOAP, API, другое
  • SQL Queries – количество запросов к базе данных, а так же время затраченное на их обработку SQL сервером

Этой информации вполне достаточно, чтобы выполнить хороший анализ кода, за короткое время (1-3 дня в зависимости от размера проекта или части анализируемого кода) и понять, какие меры следует предпринять для решения проблемы или для получения лучшего результата.

По опыту могу сказать, что были случаи, когда не корректная работа жесткого диска давала большую латентность 3-5 сек. И было потрачено много времени на оптимизацию кода и решение возможных проблем, которых в коде на самом деле не было

Профилирование выполняется в нашей тестовой среде – на нашем сервере, но мы можем организовать этот процесс и на вашей стороне при соблюдении определенных требований. Так же процесс получения информации может быть организован на основном сервере – в live режиме для сбора более «реальной» информации и это не повлияет на работу проекта.

 

Сбор информации

Сбор информации происходит только по запросу и не является постоянным, другими словами, мы собираем данные только тогда, когда, нам это нужно и только для конкретной страницы или функции.

В отличие от сервиса New Relic который мы так же рекомендуем использовать – собирает информацию все время и является по большей части мониторинг-сервисом, хотя и показывает очень детальную информацию по процессам.

 

Рекомендации

Наиболее частые рекомендации, которые мы даем уже после аудита:

  • Обновление ПО на сервере (если требуется)
  • Использование дополнительных модулей – программ для ускорения и кеширования данных: Varnish, Redis, OPCache
  • Тюнинг настроек MySQL – зависит от объема базы данных и количества подключений
  • Использовать PWA – Progressive Web Application
  • Использовать CDN сервисы

 

Какой результат дает аудит, на сколько быстрее будет работать код?

Вопрос достаточно общий и зависит от конкретного проекта. Это может быть ускорение в 300% а может быть и в 10% но не сделав аудит, мы об этом никогда не узнаем.

 

Вы получите гарантированно:
  • Общая оценка качества кода
  • Есть ли ПО с уязвимостями и что с этим делать
  • Готов ли ваш код выдержать новые испытания и принести новых клиентов
  • Причины и решение проблем и как следствие рост производительности

Заказать технический аудит проекта за $500