ООО "КЕХ еКоммерц"
ИНН:7710668349
erid:2SDnjeQXDqu
ООО "КЕХ еКоммерц"
ИНН:7710668349
erid:2SDnjeQXDqu
В статье разберем ситуацию "Проект запущен в эксплуатацию, и на нем выявляются неожиданные проблемы/ошибки". Рассмoтрим откуда могут возникать проблемы, какие ошибки бывают, как минимизировать риски ошибок, как учесть эти моменты еще на стадии разработки.
Сайт работает в динамичной среде - к нему подключаются с разных устройств, могут быть задействованы различные API. Данные сайта постепенно накапливаются в базе данных и в диске сервера.
Практически все ошибки, возникающие в проекте имеют в своем основании одну из следующих причин:
Теперь выделим возможные причины ошибок:
Если вы владелец продукта, то первое что необходимо сделать - максимально точно зафиксировать данные по ошибке:
Чем точнее вы это сделаете, тем проще будет сделать диагностику ошибки и проще, и быстрее будет решить проблему.
Чтобы разработчик мог исправить проблему, ему необходимо воспроизвести ее у себя, добиться ее устойчивого повторения. Если проблема плавающая - ее очень сложно исправлять и проблематично удостовериться, что проблема исчезла после внесения правок.
Этот вопрос кажется непродуктивным со стороны разработчиков, но в нем так же есть смысл.
Не в том плане, чтобы наказать за ошибку. В этом случае вы просто получите озлобленного разработчика, который в итоге будет работать против проекта (например, просто как бы не замечая очевидные ошибки, которые он может увидеть в коде). Это нужно скорее для того, чтобы донести суть и причину ошибки до всех разработчиков (и в особенности до того, кто ее допустил, чтобы в будущем он ее не совершал).
Если у вас систематически один человек допускает одни и те же ошибки, то скорее всего его надо снимать с проекта (если это халатность с его стороны). Тут важно понимать суть ошибки, а не просто рубить с плеча направо и налево. Очень легко разрушить атмосферу в коллективе, если просто начать искать виноватых без изучения проблемы.
Ищите причину и кто допустил ошибку для того, чтобы сделать выводы для минимизации риска подобной проблемы в будущем. Проблема обычно не в людях, а в процессах.
А если кажется, что в людях - имеет смысл начать с себя любимого.
Ошибки как минимум надо быстро исправлять. По каждой ошибки желательно находить реальную причину, а не просто исправить. И тут же вспоминаем про любимую всеми курсами и книгами по менеджменту "5 почему". Для обработки ошибок это идеально подойдет.
Можно также вести лог зафиксированных ошибок. Это позволит их анализировать в будущем и делать какие-то выводы (например, не подпускать Петю к механизму регистрации на пушечный выстрел).
Как можно минимизировать риск возникновения критичных ошибок на сайте? Для этого необходимо вести системный журнал ошибок: фиксировать все ошибки (внутренние и фронт ошибки). Проводить их категоризацию.
Когда в Falcon происходит ошибка, мы пытаемся ее соотнести к какой-то категории ошибки - это упрощает дальнейший анализ по ошибкам в целом. Подробнее про механизма анализа ошибок на Falcon Space
Также необходимо обеспечить периодический анализ состояния по логу ошибок. Это требует затрат в проекте, но так вы сможете узнавать о некоторых критичных ошибках не от пользователей, а на самой ранней стадии.
Также важно обеспечить непрерывный контроль критических точек проекта. Например, раз в неделю/месяц вручную проверять самые важные элементы:
Сами определите какие механизмы и как часто тестировать. Как вариант, можно заказать периодическую работу по проверке этих механизмов по инструкции у тестеров на kwork или аналогичной площадке.
Также косвенным признаком ошибки может быть снижение показателей и метрик: кол-во регистраций, посещаемость, увеличение показателя отказов и т.д.
Аналитика по ключевым параметрам позволит увидеть "дымок" до того как вы увидите языки пламя в виде явных ошибок.
Подробнее о внедрении автоматического тестирования сайте смотрите здесь
Чтобы уменьшить количество ошибок в будущем, поставьте во главу угла Простоту. Чем проще решение, тем надежнее оно работает. Чем больше кастома и чем более накручено решение, тем сложнее его поддерживать и тем больше в нем может быть непредвиденных нюансов.
Заказчики обычно совсем не думают об этом аспекте разработки и пытаются втиснуть в проект ненужное усложнение. Т.е. есть убеждение, что все будет работать идеально в любом случае. В реальности это совсем не так - чем сложнее и заковыристее решение, тем выше риск ошибки и тем больше оно доставит хлопот в будущем.
Как минимум, заказчик должен просто прислушиваться к опасениям разработчиков. Если ваш разработчик вообще не выказывает ни разу опасений и за все берется как бравый солдат, то возможно он не думает о последствиях костыльных и тяжелых решений.
Я - за простоту и надежность. Чем проще и стандартнее решение, тем надежнее оно работает. И это касается всего - дизайн, обработка данных, бизнес-логика, структура контента и т.д.
Второе, что может улучшить ситуацию - это контроль кода. Необходимо закладывать некий бюджет на ревизию кода (анализ кода на возможные проблемы), на рефакторинг кода (улучшение кода без изменения функциональности). Все это позволит увеличить уверенность, что код не будет выдавать каких-то фокусов, а также упростит дальнейшую поддержку.
Третье - проверка на реальных данных. Реальный объем данных, загрузка настоящий данных, а не удобных тестовых данных, при которых все выглядит красиво, но как вставишь реальные данные, все куда-то едет.
Ошибки будут всегда. Там, где пишется код под проект, всегда будут ошибки. Там, где люди используют активно IT продукт, всегда будут ошибки. Хотелось бы, чтобы было по другому, но от них невозможно полностью избавиться. Вспомнить хотя бы Windows с его патчами, сервис паками и т.д.
Главное - мониторить ошибки и оперативно реагировать на них.
Большинство ошибок типовые - по мере их исправления их становится все меньше и меньше.
Со стороны владельца веб-проекта важно обеспечить мониторинг ошибок, выделять средства на профилактику проблем, а также проработать детали процесса реагирования на возникающие проблемы. Меры, описанные в статье, позволят снизить риски возникновения критичных ошибок на вашем сайте.