Close

Что такое непрерывное развертывание?

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

Фотография Стена Питтета
Стен Питтет

Приглашенный автор


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

Цикл выпуска ПО со временем претерпел изменения. Прежний процесс переноса кода с одной машины на другую и проверки его работоспособности был подвержен ошибкам и требовал много ресурсов. Теперь инструменты могут автоматизировать весь процесс развертывания, что позволяет организациям по разработке сосредоточиться на основных бизнес-потребностях вместо накладных расходов на инфраструктуру.

Иллюстрация цикла непрерывного развертывания | Atlassian CI/CD

Непрерывное развертывание и непрерывная поставка


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

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

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

После прохождения проверки пакет автоматически развертывается в рабочей среде. Непрерывное развертывание — это полный непрерывный автоматизированный конвейер развертывания ПО.

См. решение

Разработка и эксплуатация программного обеспечения с помощью Open DevOps

Связанные материалы

Подробнее об автоматическом тестировании

Схема этапов для жизненного цикла непрерывного развертывания | Atlassian CI/CD

Преимущества непрерывного развертывания


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

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

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


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

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

На начальном этапе не спешите добиваться стопроцентного покрытия базы кода. Лучше примените инструмент измерения покрытия тестами для поиска критически важных компонентов приложения, для которых еще не созданы тесты, и начните с этого.

Автоматизированное тестирование

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

Постепенное развертывание

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

Мониторинг и оповещения

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

Рекомендации по непрерывному развертыванию


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

Разработка, основанная на тестировании

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

Единый метод развертывания

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

Контейнеризация

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

Подведем итог…


Непрерывное развертывание может стать мощным инструментом для современных организаций по разработке. Развертывание — это завершающий этап общего «непрерывного конвейера», который состоит из интеграции, поставки и развертывания. Настоящим преимуществом непрерывного развертывания является автоматизация, при которой код развертывается в рабочей среде, проверяется на правильность и автоматически возвращается к предыдущей версии при наличии ошибок или принимается при их отсутствии.

Если вы хотите внедрить непрерывную поставку, обязательно ознакомьтесь с нашими руководствами по CI/CD для DevOps, где подробно рассказывается об интеграции Open DevOps и Jira от Atlassian, а также о сторонних интеграциях.

Sten Pittet
Sten Pittet

Я уже 10 лет работаю в сфере ПО, занимал различные должности: от разработчика до менеджера продукта. Проработав 5 лет в Atlassian, где я участвовал в создании инструментов разработки, теперь я пишу статьи о разработке ПО. За пределами офиса я работаю над тем, чтобы стать хорошим отцом для своего потрясающего малыша.


Поделитесь этой статьей

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Узнать больше в блоге

Рисунок: карта

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up