Разработка, тестирование и выпуск программного обеспечения (ПО) являются сложным и многостадийным процессом. В условиях постоянно растущих требований, размеров проектов, усложнения приложений и пр. скорость и последовательность этого процесса становится первоочередным.
В этих целях используется три основных стратегии автоматизации и управления:
- непрерывная интеграция (цель – на раннем этапе минимизировать конечную продолжительность и стоимость интеграции за счет своевременного устранения ошибок);
- непрерывная доставка (продолжает непрерывную интеграцию, основная идея – автоматизировать доставку ПО для развертывания кода в производство);
- непрерывное развертывание (представляет собой продолжение непрерывной доставки, по своей сути – это автоматическое развертывание каждой сборки (нового или измененного фрагмента кода), которая проходит полный цикл тестирования).
Все описанные стратегии взаимосвязаны и призваны максимизировать частоту выпуска работающего обновленного ПО, но совершенно разные по своей сути.
И сегодня попробуем разобраться, что же из себя представляет непрерывное развертывание.
Непрерывное развертывание (CD) на текущий момент нашло свое максимальное развитие в DevOps–технологии.
НР по сути автоматизирует, делает непрерывным весь процесс. Предположим, изменение успешно проходит все предыдущие стадии (см. выше). В момент фиксации кода автоматически, без чьего–либо вмешательства, срабатывает триггер и обновления отправляются в производство (потребителям, клиентам, пользователям) в режиме реального времени. Таким образом, моментом доступности «улучшения» является момент завершения проверки и тестирования изменения кода.
Если более детально углубляться в этот процесс, то разработчик на постоянной основе фиксирует минимальные изменения в основную ветку, затем автоматически производится сборка, тест и развертывание на предпроизводственной площадке, и при успешном завершении, направляется напрямую потребителю.
Основной итог данного процесса, как и цель его применения, заключается в максимизации скорости доставки обновленной функциональности с сохранением качества. Благодаря CD появляется возможность проверки поведения обновления без риска для качества.