Разработка
January 13

Пятничные релизы (и вообще стрёмные события)

Не всё там так просто, как кажется.
Точнее, кажется просто — но совсем не там (ц), а поглубже


Почему релизы и прочие ответственные телодвижения в канун выходных плохо — это достаточно очевидно. Если что-то пойдет не так, то разгребать фейерверки будут в свои выходные совсем другие люди, которые на это не подписывались. Проблем больше, ненужной беготни больше, всем неудобно, just don’t.

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

Базовая проблема — ладно, понятна.
Интересны для текста, в этой связи, два момента:

  • почему так происходит, что надо людям отдельно напоминать «так не надо»?
  • почему вам вообще в собственном бизнесе, продукте и инфре вдруг «стрёмно» что-то делать в любой день?

Правильно заданные вопросы — половина ответа.


Ответ на первый вопрос лежит, кроме естественного желания «зафигачить и пойти домой», в известной доле безответственности. К ней вопросов нет, она у всех внутри где-то по базе присутствует, тут я без претензий.

Ответственность, если мы говорим о ней, на кнопке «я сделяль» не заканчивается. А иногда, только начинается. Или должна.

Логика «зафигачил штуку = работа закончена» глубоко порочна. Для всего, что сложнее письки и ложки.

И вот с этим надо в системах, в процессах, в людях вдумчиво и систематически бороться.

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

И тогда вопрос сводится к более тривиальному: в пятницу перед выходными ты успеешь убедиться, что всё хорошо? Если ответ «нет», это риски. Ты задачу не сделал, а рисков наплодил: пожалуйста, надо или сделать целиком, или не рисковать. Как общий подход. За ненужные риски бьют лопатой (в понедельник или ночью субботы). Не обижайся.


Еще подобные практики «фиганул и забыл» четко говорят о том, что кто-то не умеет, не хочет или затруднительно работает в команде. Оп-па, а это уже важный маркер, с ним надо разбираться комплексно.

Проблема же не в том, что Вася фиганул и забыл; проблема в том, что в рисковом случае еще 10 человек подорвутся разгребать то, что пошло наискось. И вот тут надо позадавать вопросы, и найти ответы:

  • если 10 человек потенциально огребутся, может финальное решение стоит принимать им, а не Васе?
  • а почему 10 и авральная команда, может быть что-то не так с прозрачностью и технической проверяемостью решений?
  • есть ли способ тупо предотвратить, «не дать сделать» проблемное действие?
  • что у нас с безопасными откатами и снимками состояний, политикой действий и вообще всяким безопасным undo? Один катает вперед, второй увидел проблему катает обратно, safe & sound
  • а Вася вообще знает, что кроме него в этой цепочке дальше другие люди и другие действия?
  • вот эти люди, первый и 10 последующих, у них коммуникация как выстроена?
  • любой «крайний релизный день» включал запас на тест и пуск-наладку? Если нет, вопрос к менеджеру (и это тоже командная работа)
  • что у нас по регламентам с передачей ответственности? Вот те 10 человек точно не подписывались на лишнюю ответственность явочным порядком, почему так произошло?
  • как мы можем снизить риски вообще любой нестабильности? Не в пятницу, не Васей, а по сути? (об этом далее)

Понимаете, заткнуть симптом «текстовым полем я не мудак», как в примере, это дешево и просто (и даже работает). До тех пор, пока туда не начнут копипастить строку с формулировкой «ну, у нас же жопа горела» (на постмортеме).

Если вы проектируете процессы и механизмы, что посложнее, важно пойти поразбираться не с симптомами, а с причинами. Часть причин лежит в людях. Часть — в архитектуре.

Если про людей, важно вкрутить внутрь сотрудников и внутрь процессов два понимания (с их контрольными проверками):

  • твоя работа и задача заканчивается не тогда, когда ты ее сделал, а тогда, когда она проверена и работает
  • твоя работа и задача это не только твоя работа и задача, а еще и тех коллег, которые с тобой участвуют в ее процессах

Применяется к любым вопросам, где возникает искушение сказать «я сделяль» и «с нашей стороны пули ушли» — то есть, повести себя эгоистично, недальновидно и без самоконтроля.

Помогают также явно прописанные «кросс-чеки»; помимо самой сути перекрестной проверки чего-то там, они явно добавляют в ситуацию еще нескольких людей, и несколько пар глаз. В надежде, что хотя бы один окажется не долбоебом проявит должную осмотрительность.


Теперь про архитектуру и механизм, с ответом на второй вопрос. Налицо ситуация, когда нам что-то стрёмно (страшно) делать, потому что это рисково и непредсказуемо. Факт. И то, что «стрёмно» — тоже факт, страх уберегает от безрассудства. А почему непредсказуемо?

Я даже перефразирую вопрос, чтобы было понятнее и больнее:

  • почему внутри вашей системы, продукта, механизма, процессов (в любой день, про любую задачу) вообще может возникать ситуация «нам стрёмно это делать», касательно чего угодно;
  • пора, в этой связи, что-то пойти фундаментально исправить и поменять?

Про «стрёмно» я уже писал, но все-таки. Это же ваша система (выстроенная вами), ваша инфра, ваши задачи. По идее, если всё это ваше, то должно быть в ваших же силах сделать так, чтобы работать было предсказуемо, безопасно и комфортно. Если это почему-то не так — значит, вся система уже не очень-то ваша, а принадлежит слепой удаче, техническому долгу и корейскому рандому. Дёрнем рубильник, а там как кривая вывезет. Ага?

Сводится к практическому вопросу «кто в доме хозяин, я или тараканы». Простите за избыток метафор (Кирилл, привет).

Тоже, если хочется порешать не ситуативно, есть ряд комплексных вопросов. Которые следует задать и на них себе ответить про применимость:

  • почему у нас критические действия прибиты к датам; или наоборот, даты прибиты к критическим действиям? Может, разделить?
  • есть ли у нас управление состояниями? Если в 1 тык можно сделать действие «туда», почему нельзя в один тык сделать действие «обратно»? если нельзя, мб сделать так, чтобы было можно, как механику и как процесс — см опять undo
  • чтобы не понадобилась авральная команда 10 рыл выше, может обойтись двумя, которые заранее знают, что произойдет (и один из них = автор геморроя) с типовым планом действий?
  • почему нештатная ситуация обязана быть авралом? может, где-то недостает прозрачности и observability, средств, актуальных документов, практик
  • если эксплуатация и внедрение обязаны выпадать на выходные, может пора признать что мы 24×7 и ввести плавающие смены?
  • безрисковые схемы? стендовые выкатки, green-blue, пред-подготовка решений, техническая часть отдельно от дат релизов? иногда лучше переплатить, но спать спокойно
  • нормальное планирование и, например, заранее требуемое обоснование для ситуаций «горящая жопа к дате», нет?
  • корректное оповещение связанных командных бойцов (ранее по цепочке, далее по цепочке) о происходящем? не «сами договорятся», а принудительно?
  • разрешительный чеклист и право на аппрув не у Васи-автора, а у того кто отвечает за качество? (см «право сказать да»)

В практическом смысле на отмазки «ой, ну это всё красиво, только никогда не получается» могу сказать, что времени и календаря у всех одинаково. Тебя, Васи, Гейтса, Маска. Вопрос только в том, как в нем планы написаны, и к каким датам прибиты, на каком этапе — и это тоже руками делалось.

Хочешь не бегать в жопу ужаленный — сделай всё заранее, будет время переделать. Не запрещаю, не осуждаю. Порадуюсь продуманности.

Нежно люблю продуманную цитату из супергеройского фильма:

— Когда я нажму на эту кнопку, мир, каким мы его знаем, перестанет существовать. А чтобы вы, пидорасы, мне не помешали — я сделал это полчаса назад.

Возвращаясь к вопросу про «стрёмность» и непредсказуемость: стрёмности не будет, если и непредсказуемости нет. С ней — вы можете поработать, про-работать, снизить, проложить проблемные места полиэтиленом и избавиться от малопонятного рискованного бардака внутри собственных же механизмов.

Точно станет спокойнее и легче жить, гарантирую.
И не только на релизах, и не только в пятницу.

Hope that helps.