Непрерывная доставка - Continuous delivery

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

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

Отношение к DevOps

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

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

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

Принципы

Диаграмма процесса непрерывной доставки .svg

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

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

Конвейер развертывания

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

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

Инструменты / типы инструментов

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

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

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

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

Реализация и использование

Книга на компакт-диске, написанная Джезом Хамблом и Дэвидом Фарли (2010), популяризировала этот термин, однако с момента его создания определение продолжало развиваться и теперь имеет более развитое значение. Сегодня компании внедряют эти принципы и передовой опыт непрерывной поставки. Различия в доменах, например, в медицине и в Интернете, по-прежнему значительны и влияют на реализацию и использование. Известные компании, использующие такой подход, включают Yahoo! , Amazon , Facebook , Google , Paddy Power и Wells Fargo .

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

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

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

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

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

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

Стратегии преодоления проблем усыновления

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

Стратегии преодоления проблем, связанных с принятием компакт-дисков
Стратегия Описание
Продажа компакт-диска в качестве обезболивающего Определите болевые точки каждой заинтересованной стороны, которые CD может решить, и продайте CD как болеутоляющее этому заинтересованному лицу. Эта стратегия помогает заручиться поддержкой широкого круга заинтересованных сторон, необходимого для реализации CD.
Выделенная команда с мультидисциплинарными членами Без специальной команды может быть трудно добиться прогресса, потому что сотрудников часто поручают работать над другими потоками создания ценности. Многопрофильная команда не только обеспечивает широкий спектр навыков, необходимых для реализации CD, но и упрощает общение с соответствующими командами.
Непрерывная доставка непрерывной доставки Организуйте внедрение CD таким образом, чтобы приносить пользу компании как можно раньше, постепенно, небольшими приращениями и постепенно внедряя CD во всей организации. Эта стратегия помогает оправдать требуемые инвестиции, делая очевидными конкретные выгоды. Видимые выгоды, в свою очередь, помогают добиться устойчивой поддержки компании и инвестиций, необходимых для того, чтобы выжить в долгом и трудном пути к компакт-дискам.
Начиная с простых, но важных приложений При выборе первых нескольких приложений для переноса на компакт-диск выберите те, которые легко перенести, но которые важны для бизнеса. Легкость миграции помогает быстро продемонстрировать преимущества компакт-диска, что может предотвратить гибель инициативы по внедрению. Важность для бизнеса помогает обеспечить необходимые ресурсы, демонстрирует ясную и бесспорную ценность и повышает заметность CD в организации.
Каркас конвейера Visual CD Предоставьте команде визуальный скелет конвейера компакт-диска, который имеет полное представление конвейера компакт-диска, но с пустыми этапами для тех, которые они еще не могут реализовать. Это помогает сформировать образ мыслей о компакт-дисках и сохранить импульс для принятия компакт-дисков. Каркас конвейера особенно полезен, когда переход команды на компакт-диск требует больших усилий и изменения мышления в течение длительного периода времени.
Падение эксперта Назначьте эксперта по компакт-дискам для участия в сложных проектах в качестве старшего члена команды разработчиков. Наличие эксперта в команде помогает создать мотивацию и импульс для перехода на CD изнутри команды. Это также помогает сохранить импульс, когда миграция требует больших усилий и длительного периода времени.

Смотрите также

дальнейшее чтение

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

использованная литература