Наиболее эффективные подходы к отладке (и, в конечном итоге, устранению) производственных дефектов.

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

Перво-наперво

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

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

Давайте отлаживать

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

Вышеупомянутый шаг покроет 25% усилий, необходимых для исправления дефекта. Для отладки мы можем:

  1. Проверьте консоль браузера на наличие ошибок и проверьте стек ошибок.
  2. Добавить отладчик; / точка останова (в коде и/или в браузере)
  3. Проверьте вкладку «источник» (во многих случаях скомпилированный файл main.js), найдите имя функции/ключевого слова и добавьте точки останова для отладки.
  4. Анализ журналов
  5. Проверьте вызовы API на наличие полезной нагрузки и ответа.

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

  1. Анализ журналов
  2. Если журналов ошибок/отладки недостаточно, убедитесь, что вы добавили надлежащее ведение журнала и развернули его в более низких средах (тестовых и, в конечном итоге, в рабочей среде), чтобы лучше анализировать.
  3. Проверьте, поддерживаются ли версии функций или зависимостей ES6/7 в конкретном браузере!
  4. Убедитесь, что данные доступны/правильны в производственных базах данных.
  5. Убедитесь, что необходимые конфигурации, которые необходимо перенести из одной среды в другую, доступны в производственной среде.
  6. Протестируйте производительность рабочего приложения для 2-кратной, 3-кратной и 5-кратной нагрузки.
  7. Протестируйте «очень странные» и «редкие» тестовые случаи в производственной среде.
  8. Проверьте sourceMaps и добавьте критические точки для отладки.
  9. Обратите больше внимания на любые недавние исправления, перенесенные в среды более высокого уровня.
  10. Проверьте любые недавние действия по обслуживанию, происходящие в производственной среде.
  11. В некоторых случаях возникают ошибки 503/504/GATEWAY_TIMEOUT, которые еще сложнее отловить. Мы можем попробовать приведенный ниже код, чтобы поймать их, если повезет! В противном случае причиной может быть то, что сервер не отвечает из-за недостаточного размера заголовка, низкой производительности при большей нагрузке, проблем с инфраструктурой и т. д. Также проверьте журналы службы на уровне модуля.
.then(result => ( console.log(result)) )) 
.catch((error) => {
    if (error?.response) {
         // if there is response, it means its not a 50x, but 4xx 
    } else {   
      // gets activated on 50x errors, since no response from server
   }
});

Кратко

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

Это все для этого поста. Продолжайте учиться и расти!

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.