Как положить прод за 0 секунд

Как положить прод за 0 секунд

Для начала давайте разберёмся, что это означает. Когда говорят "положил прод", имеется в виду, что в результате действий разработчика продакшн-среда была выведена из строя, и её дальнейшая работа в текущем виде невозможна. Звучит страшно, но на самом деле любая большая система довольно часто сталкивается с подобного рода проблемами.

Падение системы — это вина не только разработчика, но и всех, кто был ответственен за задачу, приведшую к сбою. Здесь, конечно, есть человеческий фактор, и говорить о полном отсутствии падений невозможно. Однако можно снизить их количество и минимизировать урон.

Вообще, в любой относительно крупной системе есть команда саппорта, которая должна оперативно реагировать на любые проблемы, а также девопс-инженер, который вместе с саппортом отслеживает инфраструктурные артефакты и инциденты.

Фактически же этим могут пренебрегать. Я работал в разных командах и компаниях: в одних поддержка была круглосуточной, в других система могла лежать по несколько часов. Если же вашей системой пользуется столько людей, что даже 10 минут простоя грозят финансовыми потерями, у вас обязательно должна быть техподдержка, а ещё лучше — команда девопсов, которая не только помогает в разработке, но и стоит на страже стабильной работы системы, дежуря в критические моменты.

Разработчикам же нужна конкретная инструкция: как задеплоить задачу до прода. Ещё лучше, если есть опытный разработчик, который поначалу будет релизить задачи новичков. Помимо плана релиза должен быть и план отката, чтобы в случае чего можно было быстро вернуть прежнюю версию.

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

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

Как положить прод за 0 секунд

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

А теперь короткая и глупая история, как у меня получилось положить прод. Прод лежал минут десять, но ущерб был серьёзный. В команде я работал всего полтора месяца. Инструкции по релизу не было. Никто не знал про релизные окна, порядок и что нужно было нажимать

В итоге, прожав джобы из прошлого релиза, я положил прод. Оказалось, джобы нужно было запускать в определённом порядке, а не по порядку как они расположены, а одну из них вообще не нужно было нажимать, несмотря на то, что в предыдущем релизе она была активной.

Вывод: если вам предлагают делать релиз без чёткой инструкции или помощи — лучше отказаться, чем нарваться на серьёзные проблемы.

1
4 комментария