При разработке программного обеспечения в стремительно меняющемся мире часто возникает вопрос, как оставаться конкурентноспособным на рынке?
Как проверять свои гипотезы быстрее, чем это делают конкуренты, поставлять новые ценности пользователю быстро и с высоким качеством, минимизировать расходы на ненужную функциональность?
Ответ на эти вопросы лежит в практиках DevOps, одной из которых является непрерывная поставка (Continuous Delivery).
Непрерывная поставка (Continuous Delivery) — это подход к разработке программного обеспечения, при котором все изменения, включая новые функции, изменения конфигурации, исправления ошибок и эксперименты, поставляются пользователям максимально быстро и безопасно.
Непрерывная поставка — важный инструмент в современном процессе создания ПО. Весь процесс можно представить следующим образом:
- Разработчик отправляет свои изменения в систему контроля версии.
- На сервере сборки начинается процесс сборки поступивших изменений.
- Запускаются юнит-тесты.
- Собранный пакет после успешной интеграции выкладывается на тестовый сервер.
- Заинтересованные лица получают уведомления о выкладке новой версии ПО на тестовую площадку. Начинается вторая фаза тестирования, запускаются интеграционные, ручные, приемочные, UI тесты и тд.
- После успешного прохождения предыдущих шагов мы имеем готовый к публикации пакет новой версии ПО.
Первые три шага в этом процессе — нам давно знакомая непрерывная интеграция. Далее идет активная фаза тестирования, большая часть из которой полностью автоматизирована.
После подтверждения готовности пакета к релизу принимается решение о дате публикации, основанное на бизнес-требованиях. Очень важно отметить, что на протяжении всего процесса непрерывной доставки мы постоянно получаем обратную связь.
Непрерывная поставка позволяет нам снизить риски релизов, делая развертывание программного обеспечения безболезненным, безопасным событием, которое может быть выполнено в любое время.
Автоматизируя большинство операций, таких как развертывание, настройки окружения, тестирование, мы сокращаем время поставки новой функциональности.
Следующим немаловажным преимуществом является повышение качества создаваемого программного обеспечения. Тратя считанные минуты на выполнение всех автоматических тестов, команда может больше времени уделять исследовательскому тестированию, юзабилити-тестированию, тестированию производительности и безопасности.
Любые успешные программные продукты или сервисы будут значительно изменяться в течение своего жизненного цикла. Инвестируя в сборку, тестирование, развертывание и автоматизацию окружения, мы добиваемся снижения стоимости создания и доставки инкрементальных изменений программного обеспечения, устраняя многие постоянные затраты, связанные с процессом выпуска ПО.
Непрерывная поставка позволяет нам доставлять ценность пользователям небольшими, но частыми партиями. Это позволяет нам как можно скорее получать обратную связь от пользователей, проверять большее количество гипотез и поставлять действительно ценное программное обеспечение.
Если выпускать новые изменения небольшими партиями, релизы становятся обыденным событием для команды. Это мероприятие больше не вызывает панику и стресс, а наоборот мотивирует, давая возможность сразу видеть результаты своей работы.
В заключение хочу сказать, что все преимущества, которые предоставляет нам непрерывная поставка, благотворно влияют на развитие компании, позволяя больше внимания уделять проблемам пользователя, доставлять новые ценности так часто, как это необходимо, сохраняя при этом высокий уровень качества.