В чем разница между непрерывной интеграцией, непрерывной доставкой и DevOps?

Я слышу эти термины вместе и задаюсь вопросом, в чем разница? Как они связаны с непрерывной сборкой и непрерывным развертыванием?

3 ответа

Решение

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

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

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

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

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

Непрерывная доставка (CD) - это концепция, впервые описанная в книге 2010 года, в соавторстве с Джезом Хамблом и Дэвидом Фарли, оба из ThoughtWorks.

Непрерывная интеграция и непрерывная доставка часто путают друг с другом, но есть некоторые ключевые различия:

  • CI может быть сделан одним разработчиком, где CD требует совместной работы команды
  • CD не может быть сделан без CI
  • CD - это линейное путешествие, где CI - это непрерывный цикл обратной связи (построения), продвигающий CD вперед
  • С CD вы всегда готовы подтолкнуть к прод
  • CI позволяет вам проверять свой код в репо несколько раз, чтобы вы могли обнаружить ваши проблемы на ранней стадии

Вот цитата из Мартина Фаулера:

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

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

Что касается DevOps, это совсем другой шарик воска. Люди часто думают, что DevOps - это роль или инструмент, но на самом деле это культура. Вы не "делаете" DevOps. Вот цитата из Майка Кэвиса, которая мне очень нравится:

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

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

http://blog.assembla.com/assemblablog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx

DevOps - это скорее всеобъемлющая идея, чем конкретная практика, немного похожая на Agile, а модульное тестирование - это практика.

Другие вопросы по тегам