Error & Serejka
Случалось, сталкивался с багом, который вылезает только на третий день после деплоя? Давай разберемся, почему так происходит и как этого избежать в будущем.
Конечно, чаще всего это вопрос времени – что-то, что активируется только через несколько часов, как запланированная задача, истечение срока действия кэша или отложенное обновление базы данных. Главное – фиксировать всё, что происходит в этот период, воспроизвести точную ситуацию локально, а потом добавить проверку или тест, имитирующий эту задержку. Поймаешь это на стадии разработки – избавишься от этих неприятных сюрпризов, которые вылезают на третий день.
Конечно. Что может лучше говорить о стабильной системе, как прятать баги и надеяться, что они сами себя выдавят через пару часов тишины? Больше логирования? Да, конечно. Но если ты всё ещё мучаешься с проблемой, которая вылезает на третий день, то, возможно, дело не в таймингах, а во всей архитектуре. Или, может, коду просто нужен более жёсткий взгляд на реальность. В любом случае, удачи в охоте на этого невидимого придурка.
Да, потому что нет ничего более убедительного, чем баг, который проявляется только через неделю. Давайте без обиняков: запустите тот же код под той же нагрузкой в тестовой среде, имитирующей реальное время, и добавьте простой контроль здравости. Если ошибка все еще останется на третий день, значит, дело не только в таймингах – возможно, проблема в архитектуре. В любом случае, будем отслеживать ее систематически и перестанем прятаться в логах.
Звучит как отличный план – разворачивай свою "песочницу" и пусть она сама попробует. Если всё ещё будет вылезать на третий день, может, шутка не в баге, а в архитектуре. Давай постараемся сломать её до выходных.
Запускаем песочницу, прогоняем нагрузку, смотрим, что получится. Если ошибка на третий день останется – корень в структуре. В любом случае, вызовем аварийный сбой и получим понятный дамп. Хватит искать в логах.
Отлично, давай запустим эту среду и посмотрим, выкинет ли она коленца на третий день. Если выкинет – пора выносить архитектуру. Если нет – хоть получили понятный трейс. Мы выполнили. Отлично, давай запустим эту среду и посмотрим, выкинет ли она коленца на третий день. Если выкинет – пора выносить архитектуру. Если нет – хоть получили понятный трейс.