Разработчики должны стремиться к развертыванию по пятницам. Не так, как и какой-то платонический идеал, что только крупные компании (или небольшие компании) могут добраться, но в качестве активного проекта команда охватывает до тех пор, пока она не будет реальностью. Этот пост стремится набросать, почему и как, и в конце появится немного обсуждения о выходах на вызове VS Shaming.
Развертывание по пятницам является практика сенсорного камня для отображения доверия, потока, реактивности и зрелости вашей команды и процессов. Неспособность развернуть в пятницу означает дефицит в одной из этих областей, и каждый из них — это то, что измеряет эффективность команд, независимо от размера компании, к которой они принадлежат.
Уверенность
Уверенность к развертыванию не уверена, что ваш код не имеет ошибок. Это уверенность, что системы, которые транспортируют новые версии кода в производство, безопасны, и что если у Кодекса есть ошибки, у команды есть достаточные механизмы для решения этой случайности.
Для механизмов развертывания это должно быть хорошо смазанная машина, которую вы регулярно управляете и обслуживаете. Для многих причин мы не будем вставать сюда, система развертывания Shaky проблематична для вашей команды, но в этом случае это означает, что всякий раз, когда вы хотите поставить код в производство, вы всегда допросите, если код или развертывание является реальным проблема. Вместо этого, если уверенность в том, что система развертывания высокая, виновник становится довольно непосредственно.
Работа с ошибками в коде в том, где здесь все нюансы. До этого момента я заявил вещи как широкий удар, который применяется ко всем командам, и я верю в это. Тем не менее, разные команды собираются потребуют разные уровни ответа на ошибки, чтобы сохранить доверие. Если вы критически важной, 24/7 система, которая имеет миллионы клиентов, процессы для решения ошибок будут отличаться от стартапа без клиентов в производстве. Это нормально. Ключ вот что у вас есть две вещи:
Способность распознавать, когда что-то не так. Это может быть ручной процессом QA (очень дорогое), автоматизированная проверка, сильная наблюдаемость в производительность системы, автоматизированная отчетность ошибок и т. Д. Если вы ищете место, чтобы начать здесь, я решительно поощряю смотрите на инструмент, похожий на HoneyComb.io, который дает вам наблюдательность мирового класса независимо от вашего размера.
Способность что-то делать с этим. Это может быть конфигурация, чтобы включить/отключить функцию, это может быть откат (ручной или автоматически), это могут быть темные функции религирования в первую очередь, это может быть окончившись вывертывания функций, которые вы можете выключить, или это может быть Политика «Живи с ней до понедельника».
Как вы решите, две вещи до вашей команды и ситуации, и поэтому уверенность — это не о каких инструментах, которые вы используете или обрабатываете, вам приходится иметь дело с вещами, речь идет о том, чтобы быть уверенным, что вы можете регулярно ставить новые функции в производство, не будучи напуган последствий нажатия кнопки развертывания.
Поток
За этими следующие три все они являются супер важными, но могут быть целые темы самих исследований. Я кратко коснусь на них, почему я думаю, что они важны, и почему развертывание по пятницам является положительным показателем для них.
Поток — это частота производства, которые люди или команды выходят. Хороший поток будет регулярным, устойчивым доставкой функций/исправлений/обновлений/и т. Д. в равномерном распределении. Причина, по которой это хорошо, так это то, что когда поток нарушен, вы всегда будете нести затраты запуска. Один из способов думать об этом:
Хороший поток запускает ваш компьютер утром и способен непрерывно писать код до конца дня, выполняя процедуры выключения и начинаете заново на следующий день.
Плохой поток будет компьютер, требующий перезапуска каждые 30 минут, заставляя вас перезапустить серверы, текстовые редакторы, контекст нагрузки на компьютер и т. Д.
Отличный поток будет № 1, но без процедур отключения/запуска .. Вот почему большинство людей просто приостанавливают свои ноутбуки вместо того, чтобы закрыть их.
Если вы должны были поставить блок в развертывании в пятницу, это создание периода времени, когда производительность преднамеренно падает и поток нарушен. Это создает неравномерность в выходе команды, где вы начнете видеть такие вещи, как в четверг и среду люди начинают пытаться стекать изменениями. Эта односторонняя способность создает дальнейшие сбои в потоке команды, где, возможно, четверги и понедельники становятся более тяжелыми развертыми дни, что команда имеет дело с развертываемыми развертываниями из-за желания получить работу, проделанную во время разрушения пятничного потока.
Пятничные развертывания не зафиксируют все проблемы с потоком (не на длительном выстрел), но отсутствие их может быть большим огромным беспорядком в команде и, таким образом, являются индикатором того, насколько хорошо работает команда.
Реактивность
Иногда вы увидите, что технологов говорят о «MTTF» и «МТТР» и «Реактивность» — это то, о чем они говорят. MTTF означает среднее время для неудачи. В частности, это означает, что однажды я обнаружил ошибку в производстве, какой период времени я ожидаю, пока я не обнаружил новую ошибку. Это была метрика, используемая для поддержки преимуществ QA, тестирования, предыдущих сред, и т. Д. МТТР означает среднее время для восстановления. Это как только мы обнаружим ошибку, как долго я должен ожидать, пока эта ошибка не будет исправлена. MTTR представляет собой метрику, используемую для разговора о системных механизмах восстановления, таких как откаты, фракваторы, вперед, а также общая эффективность процесса.
Существует естественное, но очень неправильно, корреляция для розыгрыша между MTTF и # развертываниями. Мышление состоит в том, что чем больше вы развертываете, тем больше изменений вы вводите в систему, и, таким образом, тем больше проблем, которые у вас будут иметь. Противоположное оказывается правдой. Во-первых, мы должны понимать, что уменьшением № развертываний на самом деле не вносит меньшее изменение в системе. Единицы изменений на программное обеспечение являются коммитами, а не развертываниями, и, таким образом, количество изменений в системе с 10 развертыванием 1 Commit по сравнению с системой с 1 развертыванием 10 коммит, одинаковы. Как мы добираемся до обратной связи естественной корреляции, состоит в том, что путем анализа динамики системы мы заметили, что небольшие коммиты часто часто приводят к меньшим ошибкам и лучшему MTTR. Для этого есть много причин, но один из самых простых, чтобы понять, что это намного легче GROK/проверить, что развертывание одного изменения CSS, чем для того же, когда его 3 CSS изменяется, изменение разрешений, база данных Миграция и новая конечная точка API.
MTTF все еще хорошая метрика, но его следует использовать в сочетании с МТТР как способ взглянуть на здоровье системы. Когда вы более отзывчивы на вашу систему (как измеряется через MTTR), система вы получите более здоровую.
Некоторые люди, которые выступают за не развертывание по пятницам, будут говорить о том, чтобы ошибки всплывали реже, или влияние, которое оно будет иметь по выходным. Оба из них являются сочувствующими точками зрения, но данные показывают, что если вы сосредоточены на MTTR вместо MTTF, вы можете получить упрощенную пятницу, развертываю не событие, которое не будет влиять на ваши выходные больше Нет в пятницу не развертывает политику. Этот шаг кажется большим для некоторых людей, но проще, чем кажется сначала. Быстрые развертывания и откаты искусываются большинство МТТР и довольно недорогие.
Зрелость
Это загруженное слово, но это относится к зрелости команды в смысле «Модель зрелости X». В частности, зрелость я ищу вот признание команды о том, что программное обеспечение не выполняется до тех пор, пока оно не будет в производстве, и что разработчики должны быть пастырствами, которые они делают весь путь к пользователям (и, честно говоря, за пределами, но это разная тема). Интернализация, которые изменяются, которые вы делаете, не брошены на стену или оставить для кого-то другого, чтобы развернуть в какой-то момент в будущем указывает на команда, которая движется в правильном направлении.
Владение на индивидуальном уровне разработчика Вся путь к производству — самая полезная модель собственности, которую я столкнулся, и разработчики только позволяют разрабатывать только их код в производство в любое время после того, как разработчик считает, что он готов. Принудительные изменения в очередь разбивают эту культуру. Я видел эту первую руку с очень хорошими командами/разработчиками, которые когда-то был введен «развертывание поезда», это чувство собственности ухудшилось со временем. Прежде чем мы повернули его, разработчики просили нанять конкретного человека, чтобы сделать только развертывание, чтобы просто иметь дело с выпадом таких поездов.
Вызывы выезды против мошенника
Наконец, то, что побудило меня написать, это обсуждение в Twitter, которое происходит в течение нескольких месяцев. Есть группа лиц, которые греются в «добродетели» не развертывания по пятницам. Они носит эту веру далеко и широко и, кажется, немного невосприимчит к изменению их разума на тему.
Я думаю, что это справедливо позвонить этим людям. Чтобы описать свои действия в качестве нездорового для сообщества разработчика и для выпадания людей отказаться от этого подхода к разработке программного обеспечения.
Для других людей их реальность — это то, что они не развертываются в пятницу. Это не значит, что они плохие люди. Это не значит, что мы должны позорить их. Для многих людей они делают то, что они думают, лучше всего. Это нормально, Я рад обсудить с кем-либо подходами и путь вперед, чтобы попасть в лучшее место. Другие знать Они находятся в плохом месте и активно работают, чтобы добраться до лучшего места. Потрясающий! Герои. Вы все.
Вывод
Развертывание по пятницам.
Оригинал: «https://dev.to/hammerdr/deploy-on-fridays-2pmo»