Прочитать позже

"Возникла ошибка на сайте" - как снизить риски ошибок на сайте

Рассмoтрим откуда могут возникать проблемы, какие ошибки бывают, как минимизировать риски ошибок, как учесть эти моменты еще на стадии разработки.

Введение 

В статье разберем ситуацию "Проект запущен в эксплуатацию, и на нем выявляются неожиданные проблемы/ошибки".  Рассмoтрим откуда могут возникать проблемы, какие ошибки бывают, как минимизировать риски ошибок, как учесть эти моменты еще на стадии разработки. 

Какие ошибки могут возникать в работающем проекте? 

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

Практически все ошибки, возникающие в проекте имеют в своем основании одну из следующих причин: 

  1. Логическая ошибка. Неверно задан алгоритм, ошибка в кодировании. 
  2. Техническая ошибка при разработке (ошибка синтаксиса, ссылка на несуществующий объект, система не может выполнить запрос, 500 ошибка и т.д.). 
  3. Не хватает ресурсов. Место на диске забито, памяти не хватает для выполнения операции, CPU перегружен и т.д.
  4. Ошибка на стыке различных сервисов. Один сервис что-то у себя изменил (параметры API, кодировку, методы проверки и т.д.), а сайт, обращающийся к сервису по API получил ошибку. Либо отправка почты не проходит из-за каких-то блокировок на почтовом сервере. 
  5. Ошибка целостности данных. Например, удалили из базы пользователя, а на него ссылались какие-то объекты. В итоге информация по этим связанным объектам выводится неверно, или неверно считаются метрики.
  6. Ошибка пользователя. Пользователь накрутил настройки так, что система начала давать сбой (например, пользователь настроил редирект 301 для страницы саму на себя). 
  7. Неверные системные настройки. Например, кто-то на сервере решил поэкспериментировать с ограничениями доступа или изменением версий ПО сервера. 
  8. Недоступность каких-то ресурсов (например, JS или CSS файлов). 

Теперь выделим возможные причины ошибок: 

  • ошибки программиста. Программист может сделать в основном сценарии выполнения верно, а в каких отдельных случаях не учесть нюансы. Например, вывод ROI он сделал, но не учел, что за период может быть 0 в Расходах. Тогда будет ошибка деления на 0. 
  • проблемы настроек сервера, сайта, внешних сервисов. Ключевое - давать критичные настройки только тем, кто их понимает и ответственно подходит к их изменению.  
  • неоптимизированный код. Т.е. код работает быстро на малых данных, а на больших данных начинает тормозить. 
  • не учтены нюансы устройства. Например, особенности использования на мобильных. 
  • не учтены нюансы на уровне ТЗ. Программист внедряет то, что написано в ТЗ. Но в реальном мире гораздо больше нюансов, чем в любом ТЗ. Поэтому ошибка может возникнуть из-за новых данных, о которых не было известно ранее. Например, что ставка по ипотеке может быть отрицательной! 

Фиксация ошибки

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

  • скрин ошибки. Не нужно интерпретировать ошибку или писать "там что-то странное выскочило", лучше дать непосредственно скрин проблемы. Тем, кто умеет делать видеоскрины - +100 баллов к карме;
  • URL страницы. Адрес страницы, где вы встретили проблему (не название страницы, а именно адрес https://site.ru.....);
  • текущий пользователь. Под каким пользователем была ошибка (чтобы программист потом проверял именно под этим или аналогичным пользователем, а не под админом);
  • для продвинутых - содержание консоли браузера F12/Console - там будет информация по состоянию внутренних ошибок в браузере. 

Чем точнее вы это сделаете, тем проще будет сделать диагностику ошибки и проще, и быстрее будет решить проблему. 

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

Кто виноват? 

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

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

Если у вас систематически один человек допускает одни и те же ошибки, то скорее всего его надо снимать с проекта (если это халатность с его стороны). Тут важно понимать суть ошибки, а не просто рубить с плеча направо и налево. Очень легко разрушить атмосферу в коллективе, если просто начать искать виноватых без изучения проблемы. 

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

А если кажется, что в людях - имеет смысл начать с себя любимого. 

Что делать с ошибками? 

Ошибки как минимум надо быстро исправлять. По каждой ошибки желательно находить реальную причину, а не просто исправить. И тут же вспоминаем про любимую всеми курсами и книгами по менеджменту "5 почему". Для обработки ошибок это идеально подойдет. 

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

Профилактика возникновения ошибок в проекте

Как можно минимизировать риск возникновения критичных ошибок на сайте? Для этого необходимо вести системный журнал ошибок: фиксировать все ошибки (внутренние и фронт ошибки). Проводить их категоризацию. 

Когда в Falcon происходит ошибка, мы пытаемся ее соотнести к какой-то категории ошибки - это упрощает дальнейший анализ по ошибкам в целом. Подробнее про механизма анализа ошибок на Falcon Space 

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

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

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

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

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

Аналитика по ключевым параметрам позволит увидеть "дымок" до того как вы увидите языки пламя в виде явных ошибок. 

Подробнее о внедрении автоматического тестирования сайте смотрите здесь

Как минимизировать ошибки на стадии разработки

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

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

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

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

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

Третье - проверка на реальных данных. Реальный объем данных, загрузка настоящий данных, а не  удобных тестовых данных, при которых все выглядит красиво, но как вставишь реальные данные, все куда-то едет.  

Заключение

Ошибки будут всегда. Там, где пишется код под проект, всегда будут ошибки. Там, где люди используют активно IT продукт, всегда будут ошибки. Хотелось бы, чтобы было по другому, но от них невозможно полностью избавиться. Вспомнить хотя бы Windows с его патчами, сервис паками и т.д.

Главное - мониторить ошибки и оперативно реагировать на них. 

Большинство ошибок типовые - по мере их исправления их становится все меньше и меньше. 

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

Насколько полезной была статья?
Falcon Space, автор блога

Автор статьи - Руслан Раянов

Cоздатель платформы Falcon Space

Смотреть демо

F-CRM + Site
Сайт для компании в виде лендингов + встроенная CRM для обработки заказов на услуги.
Falcon Auction Площадка услуг
Заказ услуг исполнителей через площадку.
Falcon Service Кабинеты для клиентов
Обслуживание заказов клиентов через личный кабинет на сайте

Как узнать бюджет/сроки своего проекта?

1. Создать концепцию проекта в личном кабинете

Шаблон концепции

2. Отправить нам документ концепции

Отправка идет через личный кабинет менеджеру.

3. Мы подготовим первичное КП с детализацией

Пример КП

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности

Если вам нравятся наши статьи, то пожалуйста подпишитесь на наш канал в Telegram - Falcon Space.
В нем мы будем публиковать обновления по статьям и другие материалы касательно нашей платформы.

Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Рассмoтрим откуда могут возникать проблемы, какие ошибки бывают, как минимизировать риски ошибок, как учесть эти моменты еще на стадии разработки....
Сайт использует Cookie. Правила конфиденциальности OK