10.3 Инструменты автоматизации ГОСТ Р 70860—2023

Инструменты используются на всех этапах процесса разработки.

Как правило, использование инструментов начинается с системы управления версиями файлов исходного кода (SCM), в которой размещен исходный код и которая предоставляет контролируемые процессы для выполнения обновлений программного кода, включая отслеживание всех изменений. Система SCM создает основу, на базе которой работают инструменты для сборки, тестирования, доставки и развертывания. Существуют различные системы SCM, однако наиболее широкое распространение получила система с открытым исходным кодом: git-scm.com/, которая предлагает большое количество вспомогательных инструментов, включая функции хост-сервера.

Сервер автоматизации представляет собой инструмент, используемый для автоматизации этапов непрерывной интеграции, непрерывной доставки и непрерывного развертывания. Этот инструмент оказывается особенно полезным для сборки кода из системы SCM и проведения тестирования (модульные тесты, интеграционные тесты) на основе собранного кода. Существует множество инструментов на основе сервера автоматизации, однако наиболее популярным является инструмент с открытым исходным кодом Jenkins, доступный по адресу: www.jenkins.io/.

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

ПО для управления конфигурацией используется для автоматизации предоставления ПО, управления конфигурацией и развертывания приложений. Архитектура, используемая для облачных приложений, увеличивает потребность в ПО для управления конфигурацией. Это объясняется тем, что различные облачные сервисы имеют множество компонентов, и все они должны быть оркестрованы для обеспечения правильной работы приложения. Существует целый ряд программных средств управления конфигурацией, например: Ansible: www.ansible.com/, Chef: github.com/chef/chef-workstation.

Программные средства управления конфигурацией различаются по своей архитектуре. В основе Ansible — архитектура без агентов, в то время как другие инструменты имеют архитектуру с агентами (т. е. они требуют наличия программного системного процесса, работающего в целевых узлах или на связанном с ними сервере).

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

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

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