💭 Когда я работал в
Mail.ru, у нас периодически случались разные инциденты. Позже мне самому приходилось писать постмортемы по некоторым из них. Но сейчас хочется рассказать не про сами аварии и не про какие-то технические детали, а про один важный урок, который я тогда получил и который до сих пор считаю очень полезным.
В то время я был мидлом и еще не очень понимал, как правильно действовать во время серьезных проблем в продакшене. Опыта участия в инцидентах было немного, поэтому первая реакция обычно сводилась к тому, чтобы как можно быстрее разобраться в первопричине. Хотелось понять, что именно сломалось, какой сервис виноват, кто внес изменения, после которых все пошло не так, и как именно возникла проблема. Казалось, что сначала нужно обязательно найти ответы на все эти вопросы, а уже потом что-то делать.
Именно тогда тимлид дал мне совет, который я хорошо запомнил.Во время инцидента первым делом нужно думать не о причине, а о пользователях. Если пользователи сейчас страдают, не могут пользоваться продуктом, получают ошибки или сталкиваются с деградацией сервиса, то главная задача - как можно быстрее уменьшить последствия. Иногда для этого достаточно откатить релиз. Иногда временно отключить какую-то функциональность. Иногда переключить трафик или воспользоваться каким-то временным обходным решением. Да, это может быть не самое красивое решение. Да, это может быть обычный костыль. Но если он позволяет быстро вернуть сервис в рабочее состояние, то зачастую именно это и нужно сделать в первую очередь.
Все остальные вопросы никуда не денутся. Почему произошел инцидент? Кто внес изменения? Как избежать повторения в будущем? Это все очень важные вопросы, на которые обязательно нужно будет получить ответы. Но уже после того, как пользователи перестанут страдать.
❗️Позже я сам стал тимлидом и столкнулся с гораздо большим количеством инцидентов. И со временем понял, что этот совет стоит немного дополнить. Потому что существует и противоположная крайность. Во время инцидента люди находятся под давлением. Кто-то пишет в чаты, кто-то звонит, кто-то ждет статуса. В такой обстановке очень легко начать предпринимать действия просто потому, что хочется что-то делать. Перезапустить сервис. Поменять настройки. Срочно выкатить фикс. Откатить все подряд. Иногда такие действия действительно помогают, а иногда превращают плохую ситуацию в еще более плохую.
Поэтому для себя я со временем сформулировал правило немного иначе.
Во время инцидента действительно нужно в первую очередь думать о том, как уменьшить ущерб для пользователей. Но делать стоит только то, что, как вы понимаете, с высокой вероятностью поможет решить проблему. Потому что необдуманный костыль, сделанный на нервах и в спешке, может оказаться опаснее самой первоначальной ошибки.
На мой взгляд, именно поэтому в крупных системах так много внимания уделяют observability. Когда у тебя есть хорошие метрики, логи и трейсы, ты гораздо быстрее понимаешь, что именно происходит, кого затронула проблема и какие действия действительно стоит предпринимать. А значит, меньше времени тратится на догадки и меньше риск сделать ситуацию хуже.
Кстати, завтра у нас в школе стартует курс по Observability от Виталия Лихачёва. Если тема эксплуатации систем, расследования инцидентов, метрик, логов и трейсов вам интересна - можете посмотреть программу по ссылке:
https://balun.courses/courses/observabilityКто я |
Навигация |
Спасибо