Рубрики
Uncategorized

Краткий аргумент в пользу непрерывного развертывания

Переход от непрерывной доставки к непрерывному развертыванию. Tagged с DevOps, обсудить, непрерывную передачу, непрерывное разложение.

Я работаю в молодом стартапе. Инженерная команда состоит из опытных и умных инженеров, которые приходят из разных слоев общества. Мы поняли важность непрерывной интеграции с самого начала. Я хочу поделиться нашим путешествием того, как мы перешли от Непрерывная доставка к Непрерывное развертывание Анкет

Давайте сделаем быстрое освежение различий между Непрерывная доставка и непрерывное развертывание

Непрерывная доставка

Непрерывная доставка Когда вы часто интегрируете свой код, запустите автоматический набор тестов, и, если они пройдут, перейдите, чтобы запустить шаг сборки, чтобы создать артефакты с каждым слиянием для освоения. Примеры этого включают в себя компиляцию кода Java в банки, строительные пакеты JS, упаковку в контейнеры Docker или создание изображений золотых машин. Основная цель состоит в том, чтобы иметь возможность легко развернуться, в любое время в любой из среды.

Непрерывное развертывание

Непрерывное развертывание делает это на шаг вперед и означает, что каждое изменение в течение всего пути через конвейер развертывания и автоматическое освобождение во всех средах. Ключевой принцип состоит в том, чтобы выпустить вещи в небольших кусках, чтобы было меньше шансов на разрыв вещей из -за нескольких изменений, агрегированных с момента последнего выпуска. Это помогает уменьшить среднее время для восстановления ( mttr ), так как у вас есть узкий набор, чтобы осмотреть, если что -то сломается.

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

Это сдвиг в мышлении, и важно понять, что постоянное развертывание, когда все сделано правильно, на самом деле улучшает стабильность. Как только разработчики привыкли к этой идее, они более сознательны, когда объединяют код с Главный ветвь, чтобы проверить и убедиться, что изменение работает, как и ожидалось. В случае, если/когда что-то случится с тормозом, разработчики имеют свежие изменения в памяти, и уже находятся в контексте, чтобы корень, исправление и восстановление.

Проект непрерывного развертывания гарантирует, что последние изменения всегда внедряются и сохраняют различные среды всегда в синхронизации. Это также избегает преследования и напоминает людям развернуть последние версии.

Давайте возьмем пример, чтобы контрастировать с альтернативой не развертывания немедленно — разработчик работает над задачей и объединяет код для освоения. Но сейчас 5 часов вечера, и они не хотят рисковать развертывать изменения в производство Теперь. Они обещают сделать это первым делом утром. Теперь есть много вещей, которые могут произойти между тем, как код был объединен, когда он фактически развернут.

  • Некоторый другой разработчик, работающий над другой задачей, мог бы объединить, чтобы освоить и действовать ответственно, чтобы проверить их изменения, мог бы неосознанно развернуть последнюю версию, которая включает непроверенное изменение предыдущей задачи.
  • Оригинальный разработчик могло бы заболеть. В этом случае другие члены команды не знали бы, проверил ли первоначальный разработчик изменения или нет.
  • Оригинальный разработчик мог бы перейти к исправлению ошибок с высоким приоритетом. К тому времени, когда разработчик вернулся, чтобы проверить изменения, они могли забыть все случаи краев.

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

Убедился еще?

Непрерывное развертывание требует достаточных автоматических тестов (что вы должны делать в любом случае, верно?) иметь достаточную уверенность и инвестиции в автоматизированное инструменты для обеспечения трубопроводов.

Я понимаю, что есть случаи, когда вы действительно хотите изменить рискованные изменения в непроизводственной среде. Для этого мы впервые создали механизм для развертывания блокировки, выходящих за рамки определенного этапа, если нам не было удобно развертывать их полностью. Это гарантировало, что никто другой не сможет случайно развернуть, чтобы ни развернули, чтобы продвинуть другое изменение. Мы также инвестировали в Особенности Сервис, который позволяет включать/выключать вещи во время выполнения без повторного развертывания.

Разумный подход к принятию решений.

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

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

Какой у вас опыт?

Рекомендации:

Первоначально опубликовано на https://suspendfun.com

Оригинал: «https://dev.to/therajsaxena/a-brief-argument-for-continuous-deployment-5d4h»