Привет! На связи KISLOROD. Сайты всех типов — это сложные системы, в работе которых часто возможны ошибки в программной и сбои в технической части. Но если для обычного сайта это неприятная ситуация, то в электронной коммерции это всегда выливается в убытки и упущенную прибыль. 

В статье расскажу, чем грозят проблемы в работоспособности интернет-магазина и как от них защититься.

Еще в 2014 году компания Gartner провела исследование и выяснила, что средняя стоимость 1 минуты простоя сайта обходится бизнесу в 5,6 тыс. долларов. А исследование от Ponemon Institute за 2016 год назвала цифру в 9 тыс. долларов за минуту.

Примеры крупных сбоев

В 2022 году Cloudflare внесла запланированное изменение конфигурации, которое включало добавление нового уровня маршрутизации. Изменение было несовершенным и в итоге привело к отключению некоторых крупнейших сайтов и сервисов в мире, включая Amazon, Twitch, Steam, Coinbase, Telegram, Discord, DoorDash, Gitlab и многих других.

Компании, которые затронул сбой Cloudflare
Компании, которые затронул сбой Cloudflare

В 2019 году перегрузка трафика привела к сбоям у крупнейших ритейлеров:

  • Компания J. Crew потеряла 323 тыс. покупателей и примерно за 5 часов понесла убытки на 775 тыс. долларов.

  • Walmart потерял 9 млн долларов всего за 150 минут.

  • Costco получила убытков 11 млн долларов, потому что их веб-сайт не работал более 16 часов.

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

Еще одна из причин сбоев — кибератаки и уязвимости в безопасности. Агентство Statista приводит данные о стоимости всех кибератак для европейских компаний в 2023 году, которая составила от 9,6 до 24,2 тысячи долларов.

Средняя стоимость всех кибератак для европейских фирм в 2023 году по странам
Средняя стоимость всех кибератак для европейских фирм в 2023 году по странам

Чем опасны крупные сбои

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

  • Финансовые потери. Если сбой касается платежных систем, то помимо остановки продаж есть риск непредвиденных расходов.

  • Снижение лояльности аудитории. Пользователи не будут ждать, пока магазин восстановится, и скорее всего, уйдут на другие площадки, если же сайт регулярно падает или работает медленно, то магазин потеряет клиентов.

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

Причины сбоев

Чаще всего сбои провоцируют определенные события:

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

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

  • Кибератаки и проблемы безопасности. Крупные интернет-магазины нередко подвергаются киберугрозам и атакам, поэтому для них особенно важно следить за сохранностью данных пользователей, чтобы не стать объектами шантажа.

Как предупреждать сбои и��и ликвидировать их на ранних этапах

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

Тесты производительности позволяют воспроизвести критическую ситуацию и заблаговременно проработать слабые места. Это важный момент в подготовке крупных мероприятий, распродаж и сезонных акций.

Нагрузочные тесты позволяют имитировать различные уровни спроса в контролируемых ситуациях: насколько сайт справляется с возрастающей нагрузкой, как реагирует на постепенное или резкое увеличение трафика, сохраняет ли свою функциональность.

Пример из практики 

У одного нашего клиента возникали проблемы во время распродаж. Для проведения акции создавалась специальная посадочная страница в рамках текущего сайта, и со всех каналов привлекался большой объем трафика.

Выяснилось, что предыдущий подрядчик этого не предусмотрел. Архитектура кода и серверного окружения не была рассчитана на большие нагрузки, и система регулярно давала сбой в самые пики наплыва покупателей.

Чтобы устранить проблему, мы провели ряд нагрузочных тестов, в результате которых выяснили критический минимум и максимум сайта. После чего оптимизировали код и архитектуру под соответствующие нагрузки, повысив производительность сайта.

2. Мониторинг доступности сайта 24/7

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

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

Пример из практики

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

3. Отслеживание качества кода

Неоптимальный код, наличие уязвимостей, текущие и потенциальные баги могут стать причиной сбоя в работе сайта, поэтому на своих проектах мы используем специальное программное обеспечение для анализа и измерения качества кода — SonarQube и ряд других сервисов.

SonarQube производит непрерывный статистический анализ и предупреждает о возможных проблемах:

  • находит ошибки и баги;

  • указывает на дублирование участков кода;

  • проводит поиск уязвимостей и проблем с безопасностью;

  • показывает код, который имеет недостаточное покрытие тестами;

  • определяет нарушение стандартов кодирования, плохо структурированный и запутанный код, слишком большое или малое количество комментариев.

В связке с SQ мы используем сервис Sentry, который позволяет автоматически отслеживать и регистрировать ошибки, возникающие в ко��е и на сервере, и вести учет с оперативным уведомлением.

Пример из практики

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

Мы провели глубокий технический аудит и обнаружили ряд проблем: некорректные настройки модулей Битрикс и сервера, проблемы в интеграциях и неоптимизированную структуру кода.

По итогам анализа составили список недоработок и последовательно устранили их: оптимизировали работу сервера, исправили функциональные и ошибки кода, провели рефакторинг программной части.

4. Автоматизация критических тестов

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

Автотесты сокращают время и упрощают процесс тестирования, а главное — позволяют исключить влияние человеческого фактора, то есть избежать непреднамеренных ошибок тестировщиков и разработчиков.

Пример из практики

Наш клиент — крупный интернет-магазин женского и мужского белья. До сотрудничества с нами в проекте не были внедрены автотесты перед запуском нового функционала.

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

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

5. Отлаженный процесс переноса изменений на бой

Один из способов предотвращения сбоев — правила переноса изменений на «боевую» версию сайта.

Чтобы выловить ошибки и не допустить сбоев, мы используем трехэтапную систему проверок:

  • сначала код проверяют сами разработчики, у каждого из которых своя копия сайта;

  • затем внедрения проверяются отделом тестирования;

  • последний этап — переносим изменения на боевой сайт;

  • опционально запускаем автотесты.

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

Резюме

  1. Чем больше заказов в единицу времени, тем большие убытки из-за простоя.

  2. Профилактика и предупреждение кратно дешевле, чем потери из-за сбоев.

  3. Техническая поддержка и мониторинг обязательны для любого сайта электронной коммерции.

  4. Экономия на квалифицированной разработке в итоге всегда обходится значительно дороже качественной разработки.

  5. Необходимо регулярно следить за качеством кода, искать ошибки, тестировать производительность сайта и критические внедрения.

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