10.2 Автоматизация жизненного цикла разработки ГОСТ Р 70860—2023

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

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

Непрерывная интеграция является неотъемлемой частью процесса непрерывного развертывания и непрерывной доставки, когда обновления базы исходного кода производятся часто, а сама база исходного кода собирается и тестируется регулярно (зачастую по много раз в день). Непрерывная интеграция основывается на разработке посредством тестирования с целью автоматического выполнения модульных тестов и интеграционных тестов с целью убедиться, что обновления базы исходного кода не нарушили программный код. Кроме того, такая схема организации работы призвана обеспечить быструю обратную связь с разработчиками в случае возникновения неполадок.

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

Одним из важных элементов концепции DevOps является DevSecOps. В рамках DevSecOps особое внимание уделяется функциям обеспечения безопасности, которые рассматриваются как важная и неотъемлемая часть процессов разработки и эксплуатации. Идея заключается в том, чтобы автоматизировать задачи безопасности параллельно с автоматизацией задач разработки и эксплуатации, которые являются центральным элементом концепции DevOps. При увеличении скорости выполнения задач по разработке и эксплуатации (DevOps) повышается и скорость выполнения задач, связанных с безопасностью, на протяжении всего жизненного цикла приложения (DevSecOps) [из 10.2 Автоматизация жизненного цикла разработки ГОСТ Р 70860—2023]