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

Давно заметил такой факт, что если выкатка сложная, то я сразу же открываю все инструменты мониторинга и жду ошибок. Одна, две, три проблемы - фикс и я спокоен. Но если проблем нет, то становится очень страшно.
Может быть сломалось вообще все?!?!
Большие изменения означают, что у задачи очень много факторов, все комбинации которых невозможно отследить самым тщательным тестированием и код ревью. Я уверен, что при любом сложном деплое что-то должно сломаться. По мелочи. Или по крупному. Обязательно должно.
И когда действительно сломалось, то как бы не наивно это звучало, я становлюсь
сильно спокойнее. Молния же не попадает в одно место дважды?
Расскажу пару историй из жизни.
Мы оптимизировали тормозной кусок кода, который сильно нагружал базу. Выкатили и сразу смотрим заббикс. Немного ожидания и... Красота! База работает великолепно, CPU уменьшилось в 10 раз, все ровненько, гладенько. Чудесно.
Захожу на сайт - ошибка 500 в кабинете ученика на всех страницах. Естественно нагрузка тут же снизилась на порядок, база отдыхает. Хотфиксим, катим, ждем немного пока трафик вернется и заббикс отрисует новые данные. Вот теперь ок. База нагружена, но чтение с диска уменьшилось раза в полтора, как мы и планировали.
Коллега проводит штатное нагрузочное тестирование, получает великолепные результаты. Четыре сервера выдают столько rps, сколько в прошлый раз выдавали двенадцать. Коллега радуется как хорошо настроил ферму. Подозрительно.
Через неделю
проводим тестирование заново и выясняем, что в прошлом запуске сломалась авторизация.
Нагрузка тестировала как здорово NGINX отдает 302 на if current_user.nil?
.
Чиним, и совсем другая история -
пора бежать докупать сервера.
Поэтому я давно решил, если все слишком хорошо, это очень и очень плохо.
Tweet