Непрерывная интеграция
Я согласен с определением вашего университета. Непрерывная интеграция - это стратегия, позволяющая разработчику непрерывно интегрировать код в основную линию, а не часто.
Вы можете утверждать, что это просто стратегия ветвления в вашей системе контроля версий.
Это связано с размером задач, которые вы назначаете разработчику; Если оценивается, что задача занимает 4-5 человеко-дней, то у разработчика не будет побуждения что-либо делать в течение следующих 4-5 дней, потому что он еще ничего не сделал - пока.
Итак, размер имеет значение:
small task = continuous integration
big task = frequent integration
Идеальный размер задачи не превышает дневной работы. Таким образом, разработчик, естественно, будет иметь по крайней мере одну интеграцию в день.
Непрерывная доставка
В рамках Непрерывной Доставки в основном есть три школы :
Непрерывная доставка является естественным продолжением непрерывной интеграции
Эта школа рассматривает серию подписей «Мартин Фаулер» Аддисона-Уэсли и делает предположение, что с тех пор, как выпуск 2007 года назывался «Непрерывная интеграция», а тот, что последовал в 2011 году, назывался «Непрерывная доставка», они, вероятно, представляют собой том 1 + 2. той же концептуальной идеи, которая имеет отношение к непрерывному что-то .
Непрерывная доставка связана с Agile Software Development
Эта школа отталкивается от идеи, что «Непрерывная поставка» - это способность поддерживать принципы гибкого движения, причем не просто как концептуальная идея или письмо о намерениях, но для реальной жизни - в реальной жизни.
Принятие во внимание первого принципа в Agile Manifesto, где термин «непрерывная доставка» фактически используется впервые:
Нашим главным приоритетом является удовлетворение потребностей клиентов путем своевременной и непрерывной поставки ценного программного обеспечения.
Эта школа утверждает, что «Непрерывная доставка» - это парадигма, охватывающая все, что требуется для автоматической проверки вашего «определения выполненного» .
Эта школа признает, что «Непрерывная доставка» и модное слово или мегатренд «DevOps» являются оборотными сторонами одной медали, в том смысле, что они оба пытаются охватить или заключить в капсулу эту новую парадигму или подход, а не просто технику.
Непрерывная доставка - это синоним непрерывного развертывания.
Третья школа отстаивает, что непрерывное развертывание и непрерывная доставка могут использоваться взаимозаменяемо для обозначения одного и того же.
Когда что-то готово в руках разработчиков, оно немедленно доставляется конечным пользователям, что в большинстве случаев означает, что оно должно быть развернуто в производственной среде. Следовательно, «Развернуть» и «Доставить» означает одно и то же.
В какую школу поступить
Ваш университет явно присоединился к первой школе и утверждает, что мы имеем в виду том 1 + 2 той же серии публикаций. Мое мнение таково, что это неправильное использование термина непрерывная доставка.
Я лично отстаиваю понимание того, что непрерывная доставка связана с реализацией реальной поддержки идей и концепций, заявленных гибким движением. Поэтому я присоединился к школе, которая говорит, что термин охватывает целую парадигму, например, «DevOps».
Школа, которая использует доставку в качестве синонима для развертывания, в основном поддерживается поставщиками инструментов, которые создают консоли развертывания, пытаясь получить немного шумихи от более широкого использования термина « Непрерывная доставка» .
Непрерывное развертывание
Внимание к непрерывному развертыванию в основном относится к доменам, где доступ конечного пользователя к обновлениям программного обеспечения зависит от обновления какого-либо централизованного источника этой информации и где этот централизованный источник не всегда легко обновить, поскольку он монолитный или имеет (слишком) высокую согласованность по своей природе (веб, SOA, базы данных и т. д.).
Для большого количества доменов, которые производят программное обеспечение, где нет централизованного источника информации (устройства, потребительские продукты, клиентские установки и т. Д.) Или где централизованный источник информации легко обновляется (в приложениях хранятся системы управления артефактами, репозитории с открытым исходным кодом и т. Д. ), термин «непрерывное развертывание» почти не афишируется. Они просто развернуты; это не большая вещь - это не боль, которая требует особого внимания.
Тот факт, что Непрерывное развертывание не является чем-то интересным для всех, является также аргументом, что школа, которая утверждает, что «доставка» и «развертывание» являются синонимами, все неправильно поняла. Потому что Continuous Delivery на самом деле имеет смысл для всех, даже если вы используете встроенное программное обеспечение для устройств или выпускаете плагины с открытым исходным кодом для платформы.
Определение вашего университета, что Непрерывное развертывание является естественным следующим шагом Непрерывной доставки, подразумевает, что каждая поставляемая QA-поставка должна немедленно стать доступной для конечных пользователей, ближе к определению, которое мое племя использует для описания термина «Непрерывная доставка». Release », что, в свою очередь, является еще одной концепцией, которая не имеет общего смысла для всех.
Релиз может быть очень стратегическим или политическим, и нет никаких оснований предполагать, что все захотят делать это все время (если только они не являются книжным интернет-магазином, предоставляющим услуги потоковой передачи). Тем не менее, у компаний, которые не выпускают вслепую все время, может быть множество причин, по которым они в любом случае хотят стать хозяевами развертывания, поэтому они тоже делают непрерывное развертывание . Не для выпуска в производство, а для кандидатов в версии для производственной среды.
Опять же, я верю, что ваш университет ошибся. Они принимают «Непрерывное развертывание» за «Непрерывное освобождение».
Непрерывное развертывание - это просто дисциплина непрерывной возможности переносить результат процесса разработки в производственную среду, где функциональное тестирование может выполняться в полном объеме.
Непрерывная история доставки
На картинке все это оживает:
Процесс непрерывной интеграции - это первые два действия на диаграмме перехода состояний. который - в случае успеха - запускает конвейер непрерывной доставки, который реализует определение готового . Развертывание - это всего лишь одно из многих действий, которые должны выполняться постоянно в этом конвейере. В идеале, процесс автоматизирован с момента, когда разработчик фиксирует VCS, до момента, когда конвейер подтвердил, что у нас есть действующий кандидат на выпуск.