Из Википедии, бесплатной энциклопедии
  (Перенаправлен из непрерывной доставки )
Перейти к навигации Перейти к поиску

Непрерывная доставка ( CD ) - это подход к разработке программного обеспечения, при котором команды производят программное обеспечение в короткие циклы, гарантируя, что программное обеспечение может быть надежно выпущено в любое время, а при выпуске программного обеспечения - без выполнения этого вручную. [1] [2] Он направлен на создание, тестирование и выпуск программного обеспечения с большей скоростью и частотой. Такой подход помогает снизить затраты, время и риски, связанные с внесением изменений, за счет дополнительных инкрементных обновлений приложений в производственной среде. Для непрерывной доставки важен простой и повторяемый процесс развертывания.

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

Отношение к DevOps [ править ]

Непрерывная доставка и DevOps схожи по своему значению и часто объединяются, но это две разные концепции. [3] DevOps имеет более широкий охват, [4] и сосредоточен вокруг культурных изменений, в частности, сотрудничества различных команд, участвующих в поставке программного обеспечения (разработчиков, операций, обеспечения качества, управления и т. Д.), А также автоматизации процессов. в поставке программного обеспечения. [4] Непрерывная доставка, с другой стороны, представляет собой подход к автоматизации аспекта доставки и фокусируется на объединении различных процессов и их более быстром и частом выполнении. [5] Таким образом, DevOps может быть продуктом непрерывной доставки, а CD перетекает непосредственно в DevOps.

Связь с непрерывным развертыванием [ править ]

Непрерывная доставка - это возможность доставлять программное обеспечение, которое можно развернуть в любое время с помощью выпусков вручную; это контрастирует с непрерывным развертыванием, которое использует автоматическое развертывание. [6] По словам Мартина Фаулера , непрерывное развертывание требует непрерывной доставки. [7] В академической литературе эти два подхода различаются в зависимости от метода развертывания; ручное или автоматическое. [2] [8]

Принципы [ править ]

Непрерывные угощения доставки банального понятие трубопровода развертывания [9] в качестве постного Poka-коромысло : [10] множество валидаций , через которую часть программного обеспечения должны пройти на пути освобождения . Код компилируется, если необходимо, а затем упаковывается сервером сборки каждый раз, когда изменение фиксируется в репозитории системы управления версиями , затем тестируется с помощью ряда различных методов (возможно, включая ручное тестирование), прежде чем его можно будет пометить как готовое к выпуску.

Разработчикам, привыкшим к длительному циклу, возможно, придется изменить свое мышление при работе в среде компакт-дисков. Важно понимать, что любая фиксация кода может быть передана клиентам в любой момент. Такие шаблоны, как переключение функций, могут быть очень полезны для ранней фиксации кода, который еще не готов для использования конечными пользователями. Использование NoSQL может исключить этап миграции данных и изменения схемы, часто выполняемый вручную или исключения из рабочего процесса непрерывной доставки. [11] Другие полезные методы разработки изолированного кода, такие как ветвление кода.не устарели в мире компакт-дисков, но должны быть адаптированы для соответствия принципам компакт-диска - например, запуск нескольких долгоживущих ветвей кода может оказаться непрактичным, поскольку выпускаемый артефакт должен быть построен на ранних этапах процесса компакт-диска из одной ветки кода. если он должен пройти через все фазы трубопровода. [ требуется разъяснение ]

Конвейер развертывания [ править ]

Непрерывная доставка осуществляется через конвейер развертывания. Целью конвейера развертывания является три компонента: видимость, обратная связь и постоянное развертывание. [12]

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

Инструменты / типы инструментов [ править ]

Непрерывная доставка требует автоматизации от системы управления версиями до производства. Существуют различные инструменты, которые помогают выполнить весь или часть этого процесса. [13] Эти инструменты являются частью конвейера развертывания, который включает непрерывную доставку. Типы инструментов , которые выполняют различные части процесса включают: непрерывную интеграцию , автоматизацию выпуска приложений , автоматизации сборки , управления жизненным циклом приложений . [14]

Архитектура для непрерывной доставки [ править ]

Для эффективной практики непрерывной доставки программные приложения должны соответствовать набору архитектурно значимых требований (ASR), таких как возможность развертывания, модифицируемость и тестируемость. [15] Эти ASR требуют высокого приоритета и не могут быть легко проданы.

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

Реализация и использование [ править ]

Книга на компакт-диске, написанная Джезом Хамблом и Дэвидом Фарли, популяризировала этот термин, однако с момента его создания определение продолжало развиваться и теперь имеет более развитое значение. Сегодня компании внедряют эти принципы и передовой опыт непрерывной поставки. Различия в доменах, например, медицина и сеть, по-прежнему значительны и влияют на реализацию и использование. [17] Такие известные компании, как Yahoo! , [18] Amazon , [19] Facebook , [20] Google , [21] Paddy Power [1] и Wells Fargo . [22]

Преимущества и препятствия [ править ]

Сообщалось о нескольких преимуществах непрерывной доставки. [1] [17]

  • Ускорение вывода на рынок: компакт-диск позволяет организации быстрее предоставлять клиентам бизнес-ценность, присущую новым выпускам программного обеспечения. Эта возможность помогает компании оставаться на шаг впереди конкурентов.
  • Создание правильного продукта: частые выпуски позволяют командам разработчиков приложений быстрее получать отзывы пользователей. Это позволяет им работать только над полезными функциями. Если они обнаруживают, что функция бесполезна, они больше не тратят на нее усилий. Это помогает им создавать правильный продукт.
  • Повышенная производительность и эффективность: значительная экономия времени разработчиков, тестировщиков, инженеров по эксплуатации и т. Д. За счет автоматизации.
  • Надежные выпуски: риски, связанные с выпуском, значительно снизились, а процесс выпуска стал более надежным. При использовании компакт-диска процесс развертывания и сценарии многократно тестируются перед развертыванием в производственной среде. Итак, большинство ошибок в процессе развертывания и скриптах уже обнаружено. С более частыми выпусками количество изменений кода в каждом выпуске уменьшается. Это упрощает поиск и устранение любых возникающих проблем, сокращая время, в течение которого они возникают.
  • Повышение качества продукта: количество открытых ошибок и производственных инцидентов значительно уменьшилось.
  • Повышение удовлетворенности клиентов: достигается более высокий уровень удовлетворенности клиентов.

Препятствия также были исследованы. [17]

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

Чен поднял и разработал восемь дополнительных проблем усыновления. [6] Эти проблемы связаны с организационной структурой, процессами, инструментами, инфраструктурой, унаследованными системами, архитектурой для компакт-дисков, непрерывным тестированием нефункциональных требований и оптимизацией выполнения тестов.

Стратегии преодоления трудностей усыновления [ править ]

Сообщалось о нескольких стратегиях преодоления проблем с внедрением непрерывной доставки. [6]

См. Также [ править ]

  • Управление жизненным циклом приложений
  • Автоматизация выпуска приложений
  • Управление сборкой
  • Управление изменениями
  • CI / CD
  • Автоматизация непрерывной конфигурации
  • Непрерывная интеграция
  • Непрерывное тестирование
  • DevOps
  • Управление релизами
  • Управление конфигурацией программного обеспечения
  • Управление версиями
  • WinOps

Дальнейшее чтение [ править ]

  • Скромный, Джез; Фарли, Дэвид (2010). Непрерывная доставка: надежные выпуски программного обеспечения за счет автоматизации сборки, тестирования и развертывания . Эддисон-Уэсли. ISBN 978-0-321-60191-9.
  • Вольф, Эберхард (2017). Практическое руководство по непрерывной доставке . Эддисон-Уэсли. ISBN 978-0-134-69147-3.

Ссылки [ править ]

  1. ^ а б в Чен, Ляньпин (2015). «Непрерывная доставка: огромные преимущества, но и проблемы». Программное обеспечение IEEE . 32 (2): 50–54. DOI : 10.1109 / MS.2015.27 . S2CID 1241241 . 
  2. ^ а б Шахин, Моджтаба; Али Бабара, Мухаммед; Чжу, Лиминг (2017). «Непрерывная интеграция, доставка и развертывание: систематический обзор подходов, инструментов, проблем и практик». Доступ IEEE . 5 : 3909–3943. arXiv : 1703.07019 . Bibcode : 2017arXiv170307019S . DOI : 10,1109 / ACCESS.2017.2685629 . S2CID 11638909 . 
  3. Хаммонд, Джеффри (9 сентября 2011 г.). «Взаимосвязь между DevOps и непрерывной доставкой» . Forrester Research . Лесник.
  4. ^ a b Скромный, Джез; Фарли, Дэвид (2011). Непрерывная доставка: надежные выпуски программного обеспечения за счет автоматизации сборки, тестирования и развертывания . ISBN Pearson Education Inc. 978-0-321-60191-9.
  5. ^ Swartout, Пол (2012). Непрерывная доставка и DevOps: краткое руководство . Packt Publishing. ISBN 978-1849693684.
  6. ^ а б в Чен, Ляньпин (2017). «Непрерывная доставка: преодоление проблем усыновления» . Журнал систем и программного обеспечения . 128 : 72–86. DOI : 10.1016 / j.jss.2017.02.013 .
  7. ^ "блики: ContinuousDelivery" . martinfowler.com . Проверено 29 октября 2015 .
  8. ^ Шахин, Моджтаба; Бабар, Мухаммед Али; Захеди, Мансура; Чжу, Лиминг (2017). «Помимо непрерывной доставки: эмпирическое исследование проблем непрерывного развертывания». 2017 Международный симпозиум ACM / IEEE по эмпирической разработке и измерению программного обеспечения (ESEM) . С. 111–120. DOI : 10.1109 / ESEM.2017.18 . ISBN 978-1-5090-4039-1. S2CID  3479812 .
  9. ^ Humble, J .; Читать, C .; Норт, Д. (2006). «Линия развертывания». Agile 2006 (Agile'06) . С. 113–118. DOI : 10.1109 / AGILE.2006.53 . ISBN 0-7695-2562-8. S2CID  16572138 .
  10. ^ Фицджеральд, Брайан (2014-06-03). Непрерывная разработка программного обеспечения и не только: тенденции и проблемы (PDF) . 1-й международный семинар по быстрой непрерывной разработке программного обеспечения . Нью-Йорк, штат Нью-Йорк: Ассоциация вычислительной техники. С. 1–9. DOI : 10.1145 / 2593812.2593813 . hdl : 10344/3896 . ISBN  978-1-4503-2856-2. Архивировано из оригинального (PDF) 25 октября 2014 года . Проверено 24 октября 2014 .
  11. Клюге, Ларс (12 сентября 2013 г.). «Непрерывное развертывание с MongoDB в Kitchensurfing» . slideshare.net . Проверено 3 января 2014 года .
  12. ^ Дюваль, Поль (2012). «Непрерывная доставка: шаблоны и антипаттерны в жизненном цикле программного обеспечения» (PDF) . Refcardz . Проверено 9 октября 2015 года .
  13. Филлипс, Эндрю (29 июля 2014 г.). «Конвейер непрерывной доставки - что это такое и почему он так важен при разработке программного обеспечения» . DevOps.com . Архивировано из оригинального 28 сентября 2015 года . Проверено 9 октября 2015 года .
  14. ^ Бинсток, Эндрю (16 сентября 2014). «Непрерывная поставка: гибкий преемник» . Доктор Добб "Мир разработки программного обеспечения" . Сан-Франциско: UBM.
  15. ^ Chen, Lianping (2015). К архитектуре для непрерывной доставки . 12-я рабочая конференция IEEE / IFIP по архитектуре программного обеспечения (WICSA 2015) . Монреаль, Канада: IEEE. DOI : 10,1109 / WICSA.2015.23 .
  16. ^ а б Чен, Ляньпин (2018). Микросервисы: проектирование для непрерывной доставки и DevOps . Международная конференция IEEE по архитектуре программного обеспечения (ICSA 2018) . IEEE.
  17. ^ a b c Leppänen, M .; Mäkinen, S .; Pagels, M .; Элоранта, вице-президент; Itkonen, J .; Mäntylä, MV; Мяннистё, Т. (01.03.2015). «Шоссе и проселочные дороги к непрерывному развертыванию». Программное обеспечение IEEE . 32 (2): 64–72. DOI : 10.1109 / MS.2015.50 . ISSN 0740-7459 . S2CID 18719684 .  
  18. ^ «Внедрение непрерывной доставки в Yahoo!» . confreaks.tv . 23 октября 2013 г.
  19. ^ «Скорость 2011: Джон Дженкинс,« Культура скорости » » . youtube.com . 20 июня 2011 г.
  20. ^ «Быстрое высвобождение в огромных масштабах» . 2017-08-31.
  21. Хамбл, Джез (13 февраля 2014 г.). «Аргументы в пользу непрерывной доставки» . thinkworks.com . Проверено 16 июля 2014 года .
  22. ^ jFrog (декабрь 2014 г.). «Революция непрерывной интеграции 2014 года» .