Привет! На связи KISLOROD. Сайты всех типов — это сложные системы, в работе которых часто возможны ошибки в программной и сбои в технической части. Но если для обычного сайта это неприятная ситуация, то в электронной коммерции это всегда выливается в убытки и упущенную прибыль.
В статье расскажу, чем грозят проблемы в работоспособности интернет-магазина и как от них защититься.
Еще в 2014 году компания Gartner провела исследование и выяснила, что средняя стоимость 1 минуты простоя сайта обходится бизнесу в 5,6 тыс. долларов. А исследование от Ponemon Institute за 2016 год назвала цифру в 9 тыс. долларов за минуту.
Примеры крупных сбоев
В 2022 году Cloudflare внесла запланированное изменение конфигурации, которое включало добавление нового уровня маршрутизации. Изменение было несовершенным и в итоге привело к отключению некоторых крупнейших сайтов и сервисов в мире, включая Amazon, Twitch, Steam, Coinbase, Telegram, Discord, DoorDash, Gitlab и многих других.
![Компании, которые затронул сбой Cloudflare Компании, которые затронул сбой Cloudflare](https://habrastorage.org/getpro/habr/upload_files/9a7/39c/a83/9a739ca8322206531865a73035510666.png)
В 2019 году перегрузка трафика привела к сбоям у крупнейших ритейлеров:
Компания J. Crew потеряла 323 тыс. покупателей и примерно за 5 часов понесла убытки на 775 тыс. долларов.
Walmart потерял 9 млн долларов всего за 150 минут.
Costco получила убытков 11 млн долларов, потому что их веб-сайт не работал более 16 часов.
Сайты были технически не готовы к резкому увеличению трафика, и им не хватало высокопроизводительного тестирования облачной инфраструктуры.
Еще одна из причин сбоев — кибератаки и уязвимости в безопасности. Агентство Statista приводит данные о стоимости всех кибератак для европейских компаний в 2023 году, которая составила от 9,6 до 24,2 тысячи долларов.
![Средняя стоимость всех кибератак для европейских фирм в 2023 году по странам Средняя стоимость всех кибератак для европейских фирм в 2023 году по странам](https://habrastorage.org/getpro/habr/upload_files/77e/edd/159/77eedd1591fa5c264a37fdddf6b3976f.png)
Чем опасны крупные сбои
Остановка продаж. Если интернет-магазин недоступен для владельцев, то все продажи прекращаются, и чем дольше простой, тем больше убытки.
Финансовые потери. Если сбой касается платежных систем, то помимо остановки продаж есть риск непредвиденных расходов.
Снижение лояльности аудитории. Пользователи не будут ждать, пока магазин восстановится, и скорее всего, уйдут на другие площадки, если же сайт регулярно падает или работает медленно, то магазин потеряет клиентов.
Проблемы с законом. Интернет-магазины оперируют персональными данными пользователей и обязаны обеспечить их конфиденциальность, а в случае кибератак возможна утечка, что может привести к искам.
Причины сбоев
Чаще всего сбои провоцируют определенные события:
Запуск новых продуктов, эксклюзивные события и сезонные распродажи. Связанный с этим ажиотаж может резко увеличить количество трафика, поэтому стоит заранее готовиться к любым массовым акциям.
Низкое качество кода и внедрение нового функционала. Внедрение функций, которые не были протестированы на баги или не предусмотрены архитектурой, может вызвать обрушение всего сайта, а низкое качество кода сказывается на производительности и приводит к проблемам при масштабировании проекта, которые накапливаются и могут привести к сбоям.
Кибератаки и проблемы безопасности. Крупные интернет-магазины нередко подвергаются киберугрозам и атакам, поэтому для них особенно важно следить за сохранностью данных пользователей, чтобы не стать объектами шантажа.
Как предупреждать сбои или ликвидировать их на ранних этапах
1. Нагрузочное тестирование
Тесты производительности позволяют воспроизвести критическую ситуацию и заблаговременно проработать слабые места. Это важный момент в подготовке крупных мероприятий, распродаж и сезонных акций.
![](https://habrastorage.org/getpro/habr/upload_files/646/547/341/64654734119c819e0a43214a62e23ea2.png)
Нагрузочные тесты позволяют имитировать различные уровни спроса в контролируемых ситуациях: насколько сайт справляется с возрастающей нагрузкой, как реагирует на постепенное или резкое увеличение трафика, сохраняет ли свою функциональность.
Пример из практики
У одного нашего клиента возникали проблемы во время распродаж. Для проведения акции создавалась специальная посадочная страница в рамках текущего сайта, и со всех каналов привлекался большой объем трафика.
Выяснилось, что предыдущий подрядчик этого не предусмотрел. Архитектура кода и серверного окружения не была рассчитана на большие нагрузки, и система регулярно давала сбой в самые пики наплыва покупателей.
Чтобы устранить проблему, мы провели ряд нагрузочных тестов, в результате которых выяснили критический минимум и максимум сайта. После чего оптимизировали код и архитектуру под соответствующие нагрузки, повысив производительность сайта.
2. Мониторинг доступности сайта 24/7
Отслеживание состояния сайта — это система предупреждения, которая выявляет проблемы на ранних этапах и позволяет быстро их устранять. В рамках мониторинга сайт регулярно проверяется на производительность и доступность.
Наблюдение ведется в реальном времени, что значительно сокращает сроки устранения неполадок. Администраторы сайта и все ответственные лица оперативно получают важную информацию о сбоях из логов системы.
![](https://habrastorage.org/getpro/habr/upload_files/ccf/b9a/df6/ccfb9adf67143e6d8bf9b1473ee35a0d.png)
Пример из практики
На одном из наших проектов, где подключена система мониторинга, повысилось количество занятых рабочих процессов веб-сервера. В итоге благодаря этому триггеру, мы заранее обнаружили атаку ботов и вовремя их заблокировали, не допустив падение сайта.
3. Отслеживание качества кода
Неоптимальный код, наличие уязвимостей, текущие и потенциальные баги могут стать причиной сбоя в работе сайта, поэтому на своих проектах мы используем специальное программное обеспечение для анализа и измерения качества кода — SonarQube и ряд других сервисов.
![](https://habrastorage.org/getpro/habr/upload_files/a01/f10/bf4/a01f10bf4bbf85297a6c7f5fb68def9d.png)
SonarQube производит непрерывный статистический анализ и предупреждает о возможных проблемах:
находит ошибки и баги;
указывает на дублирование участков кода;
проводит поиск уязвимостей и проблем с безопасностью;
показывает код, который имеет недостаточное покрытие тестами;
определяет нарушение стандартов кодирования, плохо структурированный и запутанный код, слишком большое или малое количество комментариев.
В связке с SQ мы используем сервис Sentry, который позволяет автоматически отслеживать и регистрировать ошибки, возникающие в коде и на сервере, и вести учет с оперативным уведомлением.
Пример из практики
К нам обратился крупный интернет-магазин женской одежды: в периоды маркетинговой активности и наплыва посетителей, сайт испытывал проблемы с производительностью. Когда количество заказов значительно вырастало, админка сайта грузилась несколько минут, из-за чего отдел продаж не мог полноценно работать.
Мы провели глубокий технический аудит и обнаружили ряд проблем: некорректные настройки модулей Битрикс и сервера, проблемы в интеграциях и неоптимизированную структуру кода.
По итогам анализа составили список недоработок и последовательно устранили их: оптимизировали работу сервера, исправили функциональные и ошибки кода, провели рефакторинг программной части.
4. Автоматизация критических тестов
Автоматизированные тесты используются, чтобы отслеживать работоспособность сайтов электронной коммерции и быстро находить ошибки. Сервис запускает тест, вводит данные в тестируемую среду, получает результаты, сравнивает их с эталоном и создает отчеты о результатах.
![](https://habrastorage.org/getpro/habr/upload_files/55f/e29/788/55fe29788003edbd833af46c5f3b6732.png)
Автотесты сокращают время и упрощают процесс тестирования, а главное — позволяют исключить влияние человеческого фактора, то есть избежать непреднамеренных ошибок тестировщиков и разработчиков.
Пример из практики
Наш клиент — крупный интернет-магазин женского и мужского белья. До сотрудничества с нами в проекте не были внедрены автотесты перед запуском нового функционала.
Тесты и релизы проводились вручную отделом тестирования, а поскольку никто не застрахован от человеческих ошибок, однажды в релиз выпустили новую функцию, которая содержала в своем сценарии критический баг на этапе чекаута, из-за которого перестала работать система оплаты. К счастью, баг был быстро обнаружен и ликвидирован.
Если же сбой продолжался значительное время, то магазин понес бы существенные убытки. Чем больше заказов в единицу времени — тем больше потери, поэтому не стоит игнорировать автоматизированное тестирование.
5. Отлаженный процесс переноса изменений на бой
Один из способов предотвращения сбоев — правила переноса изменений на «боевую» версию сайта.
Чтобы выловить ошибки и не допустить сбоев, мы используем трехэтапную систему проверок:
сначала код проверяют сами разработчики, у каждого из которых своя копия сайта;
затем внедрения проверяются отделом тестирования;
последний этап — переносим изменения на боевой сайт;
опционально запускаем автотесты.
Когда в релиз попадает особо сложный функционал, то проводим функциональное тестирование на «боевой» версии сайта. Кроме того, мы не выпускаем внедрения в конце рабочего дня и недели, а решения по запуску релиза принимают тимлиды после дополнительной проверки.
Резюме
Чем больше заказов в единицу времени, тем большие убытки из-за простоя.
Профилактика и предупреждение кратно дешевле, чем потери из-за сбоев.
Техническая поддержка и мониторинг обязательны для любого сайта электронной коммерции.
Экономия на квалифицированной разработке в итоге всегда обходится значительно дороже качественной разработки.
Необходимо регулярно следить за качеством кода, искать ошибки, тестировать производительность сайта и критические внедрения.
Для быстрого восстановления после сбоя также необходимо иметь автоматизированные системы и планы резервного копирования и восстановления файлов, баз данных и конфигурации.