- Оригинальный адрес:Deploy != Release (Part 1): The difference between deploy and release and why it matters.
- Оригинальный автор:Art Gillespie
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:stormluke
- Корректор:MechanicianW,ALVINYEH
В: «Развернута ли последняя версия?»
Ответ: «Я развернул поддержку анимации gif в производственной среде».
Q: "Это означает, что поддержка gif-анимации была выпущена?"
A: "Релизная версия Gif развернута".
просить:"……"
Я работал в ряде компаний, где слова «развертывание», «развертывание», «отправка» и «выпуск» используются небрежно, а могут даже использоваться взаимозаменяемо. Как отрасль, мы недостаточно сделали для стандартизации использования этих терминов, даже несмотря на то, что за последнее десятилетие или около того мы радикально улучшили наши методы работы и инструменты. существуетTurbine LabsВ , мы использовали точные определения «ввода в эксплуатацию», «развертывания», «выпуска» и «отката» и потратили много времени на размышления о том, когда рассматривать «выпуск» как отдельный этап процесса запуска, что мир выглядит как. В первой части этого поста я поделюсь определениями этих терминов, опишу некоторые распространенные практики «развертывание == выпуск» и объясню, почему это плохо защищено от рисков. Во второй части я описываю несколько очень эффективных методов снижения риска, когда «развертывание» и «выпуск» рассматриваются как отдельные этапы цикла развертывания программного обеспечения.
онлайн
онлайнОтносится к тому, что ваша команда получает код службы из репозитория управления исходным кодом.Версиямоментальный снимок и использовать его для обработки процесса онлайн-трафика. Я думаю, что весь процесс запуска состоит из четырех различных специализированных небольших процессов: сборка, тестирование, развертывание и выпуск. Воспользуйтесь преимуществами технологических достижений в облачной инфраструктуре, контейнерах, средах оркестрации и улучшениях процессов, таких какtwelve-factor,Непрерывная интеграцияа такженепрерывная поставка, выполнение первых трех процессов (сборка, тестирование и развертывание) никогда не было проще.
развертывать
развертыватьОтносится к процессу, с помощью которого ваша команда устанавливает новую версию кода службы в базовой настройке производственной среды. Когда мы говорим, что новая версия программного обеспеченияразвертыватьКогда мы имеем в виду, что он работает где-то в инфраструктуре производственной среды. Базовой установкой может быть только что запущенный экземпляр EC2 на AWS или контейнер Docker, работающий в контейнере в кластере Kubernetes в центре обработки данных. Ваше программное обеспечение успешно запущено, прошло проверку работоспособности и готово (как вы надеетесь!) обрабатывать онлайн-трафик, но на самом деле может не получать никакого трафика. Это важный момент, поэтому я повторю его с потрясающим форматом больших цитат Medium:
Развертывание не требует предоставления пользователям новой версии службы.
Согласно этому определению,Развертывание может быть деятельностью с практически нулевым риском. Конечно, во время развертывания может возникнуть много проблем, но если контейнер молча реагирует на сбой, и ни один пользователь не получает ответ о статусе 500, действительно ли это проблема?происходитьуже?
Новая версия (фиолетовая) развернута, но не выпущена. Заведомо исправные версии (зеленые) по-прежнему отвечают на онлайн-запросы.
выпуск
когда мы говорим сервисная версиявыпускКогда мы имеем в виду, что он отвечает за обслуживание онлайн-трафика. В форме глагола,выпускпроцесс перевода интернет-трафика на новую версию. Учитывая это определение, все риски, связанные с запуском новых бинарников — перебои в обслуживании, недовольные пользователи,The RegisterСладко-горькое содержание связано с выпуском нового программного обеспечения, а не с развертыванием. Я слышал, что в некоторых компаниях этот этап запуска называетсяпервый релиз (внедрение). В этой статье мы по-прежнему будем использоватьвыпусквыражать.
Новые версии выпускаются в ответ на онлайн-запросы.
откат
Рано или поздно, скорее всего рано или поздно, ваша команда запустит какой-нибудь глючный сервис. Откат (и его опасный, непредсказуемый и вызывающий стресс родственник, откат вперед) относится к процессу возврата онлайн-сервиса в известное состояние, обычно путем повторной публикации самой последней версии. Полезно думать об откатах как об еще одном процессе развертывания и выпуска с единственными отличиями:
- Характеристики версии, с которой вы собираетесь работать, известны в рабочей среде.
- Вы выполняете процесс развертывания и выпуска в условиях дефицита времени
- Возможно, вы выпускаете в другую среду — что-то могло измениться (или было изменено) с момента последнего неудачного выпуска.
Пример отката после публикации.
Теперь, когда мы договорились об определениях запуска, развертывания, выпуска и отката, давайте рассмотрим некоторые распространенные методы развертывания и выпуска.
Выпуск на месте (т. е. развертывание == выпуск)
Когда процесс запуска вашей команды включает в себя процесс отправки новой версии программного обеспечения на сервер, на котором запущена старая версия, и перезапуск службы, вы выполняете выпуск на месте. Согласно нашему определению выше, развертывание и выпуск происходят одновременно: как только новое программное обеспечение запускается (развертывание), оно загружает весь онлайн-трафик (выпуск) старой версии. На этом этапе успешное развертывание — это успешный релиз, а неудачное развертывание приводит к частичному или полному отключению службы, группе разгневанных пользователей и, возможно, к взбешенному менеджеру.
В процессе развертывания/выпуска, о котором мы говорим, выпуски на месте являются единственнымРиск развертываниявыставлены пользователю. Если новая версия, которую вы только что развернули, не может быть запущена - она может вызвать исключение, потому что не может быть найдена новая переменная среды, или может быть неудовлетворенная библиотечная зависимость, или вы просто не читали альманах, когда вы вышел сегодня - в это время и нет старых экземпляров службы для загрузки пользовательских запросов. В настоящее время ваш сервис как минимум частично недоступен.
Кроме того, если есть проблемы, связанные с пользователем, или более тонкие операционные проблемы, я называю этовысвобождать риск- Публикация на месте предоставляет онлайн-запросы всем вашим опубликованным экземплярам.
В кластерной среде вы можете сначала опубликовать экземпляр на месте. Эта практика обычно называетсяканарейкавыпуске, который снижает некоторые риски — процент трафика, подверженного риску развертывания и риску выпуска, равен числу новых экземпляров службы, деленному на общее количество экземпляров в кластере.
Canary Release: на одном хосте в кластере установлена новая версия.
Наконец, откат неправильного развертывания на месте может быть проблематичным. Даже если вы откатитесь (переиздаете) до более старой версии, нет никакой гарантии, что вы сможете вернуться к предыдущему состоянию системы. Как и текущее неудачное развертывание, развертывание с откатом может завершиться ошибкой при запуске.
Несмотря на относительно плохое управление рисками — даже при использовании канареек некоторые пользовательские запросы подвергаются риску развертывания — развертывание на месте по-прежнему является обычной практикой в бизнесе. Я думаю, что такой опыт приводит к неудачному смешению терминов «развертывание» и «выпуск».
не отчаивайся
Мы можем сделать лучше! существуетВторая часть этой статьи, мы обсуждаем стратегии разделения развертывания и выпуска, а также некоторые мощные рабочие процессы, которые можно построить на сложной системе выпуска.
яTurbine Labsинженера, которого мы строимHouston, служба, упрощающая создание и мониторинг сложных рабочих процессов публикации в реальном времени. Если вы хотите легко начать работу с большим количеством сервисов, вам определенно следуетсвязаться с нами. Мы будем рады поговорить с вами.
Спасибо Глену Сэнфорду, Марку МакБрайду, Эмили Пинкертон, Брук Шелли, Саре и Дженн Гиллеспи за чтение черновиков этой статьи.
благодарныйGlen D Sanford.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.