В данном кейсе описываем комплекс работ, благодаря которым получилось достичь существенных результатов производительности веб-ресурса клиента.
Исходные данные
Заказчик обратился к нам сразу с несколькими запросами относительно своего Интернет-магазина, основные из которых:
- Исправление программных ошибок;
- Ускорение работы сайта;
- Оптимизация и добавление функционала в обмен 1С;
- Частичное изменение некоторых модулей.
Веб-ресурс компании — крупный Интернет-магазин со сложной структурой и большим каталогом. Сайт был создан около пяти лет назад сторонним подрядчиком. До обращения к нам клиент сменил несколько ИТ-компаний, которые приглашались для проведения разовых работ, всё остальное время Интернет-магазин существовал сам по себе. На момент создания сайта каталог товаров был невелик, и функционирование модулей полностью устраивало клиента, однако со временем компания разрослась, ассортимент магазина многократно увеличился, и появилась заметная проблема быстродействия.
Проблемы, выявленные
на старте проекта
- Устаревшая версия CMS Bitrix (система обновлялась, но довольно редко, на момент обращения не являлась актуальной);
- Обмен с 1С происходит медленно и периодически со сбоями;
- Версия PHP выбрана неудачно — наблюдаются проблемы с быстродействием и отказоустойчивостью;
- Пользователи жалуются на долгое ожидание при загрузке страниц каталога.
Поставленные перед нашей командой задачи
- Доработать систему обмена 1С с Интернет-магазином;
- Ускорить загрузку каталога и работу сайта в целом;
- Выявить и устранить ошибки в программном коде;
- Обновить версию PHP до последней стабильной.
Реализация проекта ускорения Интернет-магазина
Так как вопрос быстродействия Интернет-магазина являлся первостепенным, сперва нашими программистами были реализовано тестирование скорости отклика различных страниц сайта. Это позволило выявить особо проблемные разделы веб-ресурса.
Первый этап ускорения работы сайта — разработка нового обмена с 1С
У клиента имелся написанный специально под его сайт модуль обмена с 1С. Однако данная разработка технически устарела, и с каждым обновлением CMS выдавала всё больше ошибок. Наиболее оптимальным решением в данной ситуации стало написание качественного обмена с нуля, учитывая все пожелания заказчика.
Отметим, что при запуске сайта, разработанный на тот момент модуль обмена удовлетворял всем требованиям клиента. Но отсутствие технического обслуживания и мониторинга состояния систем со временем привело к появлению множественных ошибок.
В написании нового модуля участвовала целая группа наших разработчиков — ведущий веб-программист, 1С-разработчик и ИТ-инженер. Комплексный подход к созданию и внедрению обмена, позволил максимально эффективно использовать имеющиеся мощности и грамотно настроить взаимодействие Bitrix и 1С.
Второй этап работ — оптимизация кода и рефакторинг сайта
Основной задачей, которую необходимо было решить для клиента, являлось ускорение работы сайта. Так как каталог пополнялся без какой-либо оптимизации программного кода, системе становилось всё сложнее обрабатывать запросы пользователей. В итоге долгое ожидание отклика веб-ресурса создавало дискомфорт для покупателей. Да, частично вопрос медленной работы сайта был решен еще на первом этапе при обновлении системы обмена с 1С, однако это была не единственная проблемная сторона. Нам предстояло выявить слабые места в коде и провести работы по его оптимизации.
Для полноценного исследования были использованы различные средства, от ручного тестирования и поиска проблемных участков, до применения специализированного программного обеспечения. Технический аудит сайта позволил выявить несколько критических недоработок, среди которых была неправильно организованная фильтрация товаров. Каталожный фильтр работал недопустимо медленно, пользователям приходилось по несколько секунд ожидать отображения подходящих позиций. У данной проблемы было сразу две причины:
- Фильтр реализован на старой версии компонента «Bitrix-фильтров», который не был предназначен для большого объема товаров и их свойств;
- Свойства, используемые в фильтрации являлись «списочными», а не «числовыми», что значительно замедляло работу вычислительных алгоритмов.
Наши программисты установили новую версию компонента Bitrix, после чего приступили к переработке кода и логики фильтрования. Помимо работы с каталожными свойствами, была реализована программная оптимизация кода под структуру базы клиента. Итоги данного комплекса доработок были весьма ощутимы — уже на данном этапе удалось значительно ускорить работу сайта.
Третий этап — обновление программного обеспечения
Как мы уже упоминали ранее, установленное ПО было устаревшим, и это являлось еще одной причиной медленной работы сайта. Помимо этого, предыдущими разработчиками была допущена существенная ошибка — во время последнего обновления версии PHP (с версии PHP 5.6) они перешли на версию PHP 7.1, которая является промежуточной и неоптимальной. В свою очередь CMS Bitrix, на момент выполнения проекта, уже требовала апдейт до 7.4.
Обновление версии PHP в данном случае было весьма трудоемким процессом. Проектной группе потребовалось создать полную копию сайта и на её основе проводить необходимые доработки. Дубликат веб-ресурса был развернут в частном облаке, выделенном для клиента бесплатно, в рамках проекта. Гибкие возможностям нашего облачного сервера позволили корректно обновить PHP и CMS на тестовой версии сайта, а также реализовать все необходимые проверки быстродействия и отказоустойчивости системы.
Только после успешного тестирования программисты приступили к работе с продакшен-версией сайта.
Обновление PHP благоприятно повлияло на скорость загрузки страниц, а также повысило уровень безопасности Интернет-магазина.
Дополнительно был подключен Memcached — высокопроизводительная система хранения данных в оперативной памяти сервера, что также благоприятно сказалось на скорости загрузки сайта.
Результаты
- 1Для клиента был разработан новый обмен с 1С, соответствующий всем современным стандартам и требованиям к скорости обработки информации;
- 2Программный код сайта заказчика был тщательно проанализирован и оптимизирован, обновлен модуль фильтров, что значительно улучшило производительность;
- 3Обновлены версии PHP и CMS Bitrix, повышена безопасность и скорость обработки запросов пользователей;
- 4Подключено расширение Memcached, которое оптимизирует работу с кэшированием данных;
- 5Благодаря всем реализованным разработкам, сайт клиента стал предоставлять пользователям информацию вдвое быстрее, а система перестала выдавать ошибки при обмене с 1С.