Когда все слишком хорошо

August 15, 2016

Давно заметил такой факт, что если выкатка сложная, то я сразу же открываю все инструменты мониторинга и жду ошибок. Одна, две, три проблемы - фикс и я спокоен. Но если проблем нет, то становится очень страшно.

Может быть сломалось вообще все?!?!

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

И когда действительно сломалось, то как бы не наивно это звучало, я становлюсь сильно спокойнее. Молния же не попадает в одно место дважды? :smile:

···

Расскажу пару историй из жизни.

Мы оптимизировали тормозной кусок кода, который сильно нагружал базу. Выкатили и сразу смотрим заббикс. Немного ожидания и... Красота! База работает великолепно, CPU уменьшилось в 10 раз, все ровненько, гладенько. Чудесно.

Захожу на сайт - ошибка 500 в кабинете ученика на всех страницах. Естественно нагрузка тут же снизилась на порядок, база отдыхает. Хотфиксим, катим, ждем немного пока трафик вернется и заббикс отрисует новые данные. Вот теперь ок. База нагружена, но чтение с диска уменьшилось раза в полтора, как мы и планировали.

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

Через неделю проводим тестирование заново и выясняем, что в прошлом запуске сломалась авторизация. Нагрузка тестировала как здорово NGINX отдает 302 на if current_user.nil?. Чиним, и совсем другая история - пора бежать докупать сервера.

Поэтому я давно решил, если все слишком хорошо, это очень и очень плохо.

comments powered by Disqus