- PVSM.RU - https://www.pvsm.ru -

Справочная: что такое Continuous Delivery

Ранее мы рассказали [1] о Continuous Integration (CI). Продолжим с Continuous Delivery. Это — свод методов разработки ПО. Он помогает удостовериться в готовности кода к развёртыванию.

Справочная: что такое Continuous Delivery - 1 [2]
/ Pixabay / bluebudgie [3] / PL [4]

История

Cловосочетание continuous delivery можно было увидеть ещё в agile-манифесте [5] от 2001 года в начале списка основных принципов: «Приоритет — решение задач заказчика с помощью непрерывной поставки актуального ПО».

В 2010 году Джез Хамбл (Jez Humble) и Дэвид Фарли (David Farley) выпустили книгу [6] по Continuous Delivery. По замыслу авторов, CD дополняет подход Continuous Integration [1] и позволяет упростить подготовку кода к развёртыванию.

После публикации книги подход начал набирать популярность и всего за пару лет стал практически общепринятым. Согласно опросу [7], проведенному среди более чем 600 разработчиков и ИТ-менеджеров в 2014 году, 97% технических руководителей и 84% программистов были знакомы с Continuous Delivery.

Сейчас этот подход остаётся одним из наиболее популярных. По данным исследования 2018 года, к которому привлекли сообщество IT-специалистов DevOps and Jenkins Community, его использует [8] половина из более чем тысячи опрошенных респондентов.

Как работает Continuous Delivery

Базис CD — готовность кода к развёртыванию. Для выполнения этой задачи используется автоматизация процесса подготовки ПО к релизу. Он должен быть стандартным для различных сред разработки, что поможет быстрее находить слабые места и оптимизировать их. Например, ускорять тестирование.

Пример процесса Continuous Delivery выглядит следующим образом:

Справочная: что такое Continuous Delivery - 2

Если за автоматизацию первых двух этапов отвечает подход Continuous Integration, то за следующие два — Continuous Delivery. Стабильность процесса обеспечивается в том числе и за счет систем управления конфигурациями [9]. Они мониторят изменения в инфраструктуре, базах данных и зависимостях. Само развёртывание может быть автоматизировано, а может производится вручную.

К процессу предъявляются следующие требования:

  • Доступность информации о готовности к выходу в production-среду и готовность к непосредственному релизу (CD-инструменты тестируют код и дают возможность оценить эффект от изменений в релизе).
  • Общая ответственность за финальный продукт. Команда продукта — менеджеры, разработчики, тестировщики — думают о результате, а не только о своей зоне ответственности (результат — рабочий релиз, который доступен для пользователей продукта).

В CD обычно применяют code review [10], а для сбора мнений клиентов — принцип dark launching [11]. Новую функцию сначала выпускают для небольшого сегмента пользователей — их опыт взаимодействия с продуктом помогает найти недочёты и баги, которые не заметили при внутреннем тестировании.

В чём выгода

Continuous Delivery помогает упростить развёртывание кода, что положительно влияет на продуктивность и снижает вероятность эмоционального выгорания сотрудников. В конечном счете это снижает и общие расходы на разработку. Например, CD помог одной из команд HP снизить [12] такие затраты на 40%.

Помимо этого — согласно исследованию 2016 года (страница 28 документа [13]) — компании, внедрившие CD, на 50% быстрее решают проблемы с ИБ, по сравнению с теми, кто не используют подход. В некоторой степени такое различие можно объяснить работой инструментов автоматизации процесса.

Ещё один плюс — ускорение выпуска релизов. В финской студии разработки непрерывная поставка помогла [14] увеличить скорость сборки кода на 25%.

Потенциальные сложности

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

Вторая потенциальная проблема — большое количество ветвей кода. Последствие «разветвления» — частые конфликты и очередные потери большого количества времени. Возможное решение — подход no branches [15].

В частности, в некоторых компаниях основные сложности возникают с тестированием — на него уходит слишком много времени. Результаты тестов зачастую приходится анализировать вручную, но возможным решением может быть распараллеливание тестов на первых этапах внедрения CD.

Также следует обучить сотрудников работе с новыми инструментами — предварительный ликбез сэкономит разработчикам силы и время.

Справочная: что такое Continuous Delivery - 3
/ Flickr / h.ger1969 [16] / CC BY-SA [4]

Инструменты

Приведём несколько открытых инструментов для Continuous Delivery:

  • GoCD [17] — сервер для непрерывной поставки на Java и JRuby on Rails. Позволяет контролировать весь процесс поставки приложения: build—test—release. Инструмент распространяется по лицензии Apache 2.0. На официальном сайте можно найти руководство по настройке [18].
  • Capistrano [19] — фреймворк для создания скриптов, автоматизирующих развертку приложений на Ruby, Java или PHP. Capistrano способен выполнять команды на удаленной машине, подключаясь к ней по SSH. Работает с другими инструментами непрерывной интеграции и поставки, например CI-сервером Integrity.
  • Gradle [20] — мультиплатформенный инструмент, автоматизирующий весь цикл разработки приложений. Gradle работает с Java, Python, C/C++, Scala и др. Есть интеграция с Eclipse, IntelliJ и Jenkins.
  • Drone [21] — платформа для CD на языке Go. Drone можно развернуть on-premise или в облаке. Инструмент построен на базе контейнеров и использует YAML-файлы для управления ими.
  • Spinnaker [22] — платформа для непрерывной поставки кода в мультиоблачных системах. Разработана в Netflix, большую роль в разработке инструмента сыграли инженеры Google. Инструкцию по установке вы найдете на официальном сайте [23].

Что почитать в нашем корпоративном блоге:

Автор: 1cloud

Источник [27]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka-prilozhenij/315686

Ссылки в тексте:

[1] рассказали: https://habr.com/ru/company/1cloud/blog/447090/

[2] Image: https://habr.com/ru/company/1cloud/blog/449364/

[3] bluebudgie: https://pixabay.com/ru/photos/%D0%BE%D0%BA%D0%BD%D0%BE-%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BE%D0%BA-%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%82%D1%8C-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D0%BD-3887621/

[4] PL: https://pixabay.com/ru/service/terms/#license

[5] agile-манифесте: https://agilemanifesto.org/iso/en/principles.html

[6] книгу: https://www.ozon.ru/context/detail/id/7243884/

[7] опросу: https://www.perforce.com/press-releases/continuous-delivery-adoption-rates-soar-according-study-commissioned-perforce

[8] использует: https://www.cloudbees.com/press/jenkins-community-releases-fifth-annual-devops-and-jenkins-community-survey-sponsored

[9] управления конфигурациями: https://en.wikipedia.org/wiki/Configuration_management

[10] code review: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0

[11] dark launching: https://www.quora.com/What-is-a-dark-launch-in-terms-of-continuous-delivery-of-software

[12] снизить: https://www.thoughtworks.com/insights/blog/case-continuous-delivery

[13] документа: https://www.ciosummits.com/Online_Assets_Puppet_2016_State_of_DevOps_Report.pdf

[14] помогла: https://www.researchgate.net/publication/328075799_Towards_Cloud_Native_Continuous_Delivery_An_Industrial_Experience_Report

[15] no branches: https://medium.com/@ErikGebers/is-the-best-branching-strategy-no-branches-at-all-5cd7774d863b

[16] h.ger1969: https://www.flickr.com/photos/98920507@N07/14796698932/

[17] GoCD: https://github.com/gocd/gocd

[18] руководство по настройке: https://www.gocd.org/getting-started/part-1/

[19] Capistrano: https://github.com/capistrano

[20] Gradle: https://github.com/gradle/gradle

[21] Drone: https://github.com/drone

[22] Spinnaker: https://github.com/spinnaker

[23] найдете на официальном сайте: https://www.spinnaker.io/setup/

[24] DevOps в облачном сервисе на примере 1cloud.ru: https://1cloud.ru/blog/devops-v-razrabotke-oblaka-1cloud?utm_source=habrahabr&utm_medium=cpm&utm_campaign=cd&utm_content=blog

[25] Как можно экономить с помощью нашего API: https://1cloud.ru/blog/ekonomiya-na-api?utm_source=habrahabr&utm_medium=cpm&utm_campaign=cd&utm_content=blog

[26] Эволюция архитектуры облака 1cloud: https://1cloud.ru/blog/our-system-architecture-evolution?utm_source=habrahabr&utm_medium=cpm&utm_campaign=cd&utm_content=blog

[27] Источник: https://habr.com/ru/post/449364/?utm_campaign=449364