Из ГОСТ Р 70860—2023 Информационные технологии. Облачные вычисления. Общие технологии и методы

10.1 Общие положения ГОСТ Р 70860—2023

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

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

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

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

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

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

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

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

      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]

        11.1 Общие положения ГОСТ Р 70860—2023

        PaaS представляет собой категорию облачных сервисов для предоставления платформенных функциональных возможностей, которые ГОСТ ISO/IEC 17788 рассматривает в качестве инструментов, с помощью которых потребитель облачной службы может развертывать, контролировать и использовать приложения, созданные или приобретенные потребителем, используя один или несколько языков программирования и одну или несколько сред выполнения, поддерживаемых поставщиком облачной службы. Система PaaS обычно включает в себя согласованный набор облачных сервисов PaaS, предназначенных для совместной работы.

        Системы PaaS, в первую очередь, предназначены для разработки, развертывания и эксплуатации клиентских приложений. Часто в таких системах предусмотрены и другие вспомогательные функциональные возможности, такие как использование приложений, ресурсов для обработки, хранения и сетевой передачи данных. Системы PaaS обычно включают в себя различные функциональные возможности инфраструктуры прикладного ПО (промежуточное ПО), включая платформы приложений, интеграционные платформы, платформы бизнес-аналитики, сервисы потоковой обработки событий и мобильные backend-сервисы, а также наборы инструментов, поддерживающих процесс разработки. Кроме того, системы PaaS часто поддерживают набор операционных функциональных возможностей, таких как мониторинг, управление, развертывание и другие сопутствующие функции.

        Они поддерживают концепцию DevOps и ориентированы на разработчиков приложений, а также на операционный персонал.

        Систему PaaS можно описать как облачный сервис по созданию инфраструктуры приложений, которая включает в себя такие компоненты, как серверы приложений, системы управления базами данных, брокеры интеграции, системы управления бизнес-процессами, обработчики правил и системы комплексной обработки событий. Такая инфраструктура приложений помогает разработчику приложений в написании бизнес-приложений, сокращая объем создаваемого кода и одновременно расширяя функциональные возможности приложений. Суть системы PaaS заключается в том, что поставщик облачной службы занимается установкой, настройкой и эксплуатацией среды выполнения приложений (включая все ВМ, ОС, контейнеры, среды выполнения, библиотеки), предоставляя потребителям сервиса облачных вычислений и разработчикам только сам код приложения. Таким образом, основное различие между системами laaS и PaaS заключается в том, что в случае с laaS заказчик должен создать образ ВМ или контейнера для выполнения кода приложения, тогда как PaaS предоставляет все необходимое для загрузки и непосредственного выполнения кода приложения.

        Системы PaaS также часто расширяют платформенные функциональные возможности промежуточного ПО, предлагая разработчикам приложений разнообразный и постоянно пополняемый набор сервисов и API с определенными функциями, которые отличаются возможностью управления и постоянной доступностью. Таким образом, разработчики избавлены от необходимости заниматься промежуточным ПО, что сразу повышает продуктивность их работы. Некоторые системы PaaS также сочетают в себе функции облачных сервисов laaS и SaaS, обеспечивая, с одной стороны, функции контроля распределения основных ресурсов, а с другой — полностью готовые к использованию программные функциональные возможности.

        Системы PaaS, как правило, предоставляют свои функциональные возможности таким образом, чтобы приложения, разработанные на их основе, могли совместить в себе преимущества всех отличительных особенностей облачных сервисов. При этом разработчику приложения даже не нужно добавлять специальный программный код в само приложение. Это дает возможность создавать облачные приложения без необходимости в специальных профессиональных навыках [из 11.1 Общие положения ГОСТ Р 70860—2023]

          11.2 Отличительные особенности систем PaaS ГОСТ Р 70860—2023

          Системы PaaS имеют следующие основные отличительные особенности:

          • поддержка пользовательских приложений: поддержка разработки, развертывания и эксплуатации пользовательских приложений. Системы PaaS обычно поддерживают облачные приложения, которые могут в полной мере использовать преимущества масштабируемых, адаптивных и распределенных функциональных возможностей облачной инфраструктуры. При этом для их использования разработчикам приложений даже не нужно создавать специальный программный код;
          • предоставление сред выполнения: системы PaaS обычно предлагают среды выполнения для приложений, где каждая среда выполнения поддерживает либо один, либо небольшой набор языков программирования и фреймворков, например среды выполнения Node.js, Ruby и РНР. Отличительной особенностью многих систем PaaS является поддержка широкого ряда сред выполнения. Это позволяет разработчикам выбирать наиболее подходящую технологию для решения поставленной задачи. Такие среды иногда называют многоязычными.

          Среды выполнения могут использовать контейнеры (см. раздел 7) и бессерверные вычисления (см. раздел 8);

          • механизмы быстрого развертывания: многие системы PaaS предоставляют разработчикам и операционному персоналу автоматизированный механизм push and run для развертывания и работы приложений. Он обеспечивает динамическое выделение ресурсов, когда код приложения передается облачному сервису PaaS через API. По умолчанию требования к конфигурации являются минимальными. При этом предусмотрена возможность для контроля конфигурации, если это необходимо; например, возможность контроля количества параллельно работающих экземпляров приложения, чтобы справиться с рабочей нагрузкой или обеспечить отказоустойчивость;
          • поддержка ряда функциональных возможностей промежуточного ПО: приложения предъявляют разнообразные требования, для удовлетворения которых предоставляется широкий спектр инфраструктуры приложений (промежуточное ПО) с поддержкой ряда функциональных возможностей. Одним из примеров является управление базами данных. Для этих целей предоставляются технологии баз данных как SQL, так и NoSQL. Другие функциональные возможности включают в себя сервисы интеграции, управление бизнес-процессами, сервисы бизнес-аналитики, обработчики правил, сервисы обработки событий и мобильные backend-сервисы;
          • предоставление сервисов: системы PaaS зачастую предоставляют некоторые функциональные возможности в виде ряда отдельных сервисов, которые обычно вызываются через API того или иного типа. Сервисы устанавливаются и запускаются поставщиком услуг, поэтому потребители сервисов облачных вычислений этим не занимаются. Например, если используются сервисы базы данных, поставщик услуг обеспечивает доступность и надежность, наличие реплик и резервных копий данных базы данных, защиту данных и т. п. Услуги, предоставляемые поставщиком, позволяют уменьшить объем работы и сложность при создании программных систем. Вместо того чтобы устанавливать потенциально сложный набор ПО и управлять им, клиенты могут получить готовые функциональные возможности от поставщика;
          • предварительно сконфигурированные функциональные возможности: многие системы PaaS поддерживают функциональные возможности, которые предварительно настраиваются поставщиком, при этом разработчикам и операционному персоналу заказчика доступен минимум настроек. В результате процесс упрощается, повышается продуктивность работы и уменьшается вероятность возникновения непредвиденных проблем. При этом такие функциональные возможности проще в управлении и в отладке. Некоторые системы могут автоматически настраивать конфигурацию на основе моделей использования и рабочих нагрузок. Это дополнительно сокращает количество специалистов и времени, необходимых для обеспечения максимально эффективной работы приложений;
          • функции управления API: бизнес-приложения часто реализуют отдельные функциональные возможности через API. Это может быть связано с характером пользовательского интерфейса приложения. Мобильным приложениям обычно требуется API, чтобы, работая независимо от бизнес-приложения, они могли получать доступ к данным и транзакциям по мере необходимости. В других случаях предприятие может испытывать необходимость предоставления другим сторонам (партнерам, клиентам, поставщикам) возможностей для интеграции своих собственных приложений с приложениями компании. Такая интеграция осуществляется через API. Предоставление API требует определенного уровня контроля, чтобы только авторизованные пользователи могли получить доступ к API и каждый пользователь мог получить доступ только к индивидуально разрешенным функциональным возможностям. Для этого необходимо наличие определенных функций управления API, которые предлагаются многими системами PaaS;
          • функции обеспечения безопасности: безопасность — один из самых важных аспектов любого решения. Системы PaaS обычно оснащены предварительно интегрированными средствами обеспечения безопасности, что позволяет снизить нагрузку на разработчиков и операционный персонал. Функциональные возможности включают в себя межсетевой экран, управление конечными точками, защищенную обработку протоколов, доступ и авторизацию, шифрование данных при перемещении и хранении, проверку целостности, а также механизмы обеспечения отказоустойчивости, такие как резервные копии данных и автоматическое резервное копирование. Системы PaaS могут предложить эти функциональные возможности, оказывая минимальное или нулевое влияние на код приложения, упрощая задачи разработчика. Кроме того, поскольку базовая среда выполнения является частью платформы, поставщик облачной службы осуществляет установку исправлений системы безопасности ОС, обнаружение и удаление вредоносных программ и другие важные задачи по поддержанию безопасности. Таким образом, пользователям не нужно заниматься поиском уязвимостей системы безопасности в собственном коде;
          • инструменты разработчика: многие системы PaaS стремятся унифицировать и упростить процессы разработки и эксплуатации, т. е. поддерживают концепцию DevOps, объединяя задачи разработки и эксплуатации. Предоставляемые инструменты разработки включают в себя редакторы кода, репозитории кода, инструменты сборки, инструменты развертывания, инструменты и сервисы тестирования, и инструменты обеспечения безопасности. Часто предлагаются сервисы мониторинга и анализа приложений, которые поддерживают такие функциональные возможности, как протоколирование, анализ журналов, анализ использования приложений и информационные панели;
          • операционные функциональные возможности: системы PaaS помогают операционному персоналу, предлагая операционные функциональные возможности как для развернутых приложений, так и для самой системы PaaS. Они реализуются через информационные панели, а также с помощью API и позволяют клиентам подключать собственные операционные инструменты. Например, часто предлагаются функциональные возможности увеличения или уменьшения количества запущенных экземпляров приложения (для решения проблемы меняющейся нагрузки на приложение). В некоторых случаях такие задачи решаются с помощью автоматизированных сервисов, которые меняют количество экземпляров на основе набора правил, установленного эксплуатационным персоналом потребителя облачной службы;
          • поддержка переноса существующих приложений: у многих потребителей облачных служб имеются приложения, которые могут быть перенесены в среду PaaS. Некоторые PaaS-системы предлагают прикладные среды, цель которых — соответствовать средам, доступным в существующих необлачных стеках промежуточного ПО, а также соответствующие инструменты, которые помогают в процессе переноса;
          • поддержка приложений, использующих архитектуру микросервисов: системы PaaS, как правило, предлагают поддержку приложений, построенных с использованием архитектуры микросервисов (см. раздел 9). Сюда входит поддержка сред выполнения, используемых для самих микросервисов, поддержка базовых сервисов, используемых микросервисами, и поддержка сервисной сетки, которая объединяет все компоненты;
          • сетевые функциональные возможности: поскольку поставщик облачной службы полностью контролирует используемые стеки сетевых протоколов, системы PaaS могут быть более глубоко интегрированы с сетевыми функциональными возможностями хоста поставщика облачной службы. Это позволяет относительно легко (как для поставщика облачной службы, так и для разработчика потребителя облачной службы) интегрировать PaaS с технологиями виртуализации сети, балансировки нагрузки сети, технологиями обеспечения отказоустойчивости, оптимизации сети, кеширования, передачи сообщений и работы с очередями и другими сетевыми технологиями.

          [из 11.2 Отличительные особенности систем PaaS ГОСТ Р 70860—2023]

            11.3 Архитектура компонентов, работающих под управлением системы PaaS ГОСТ Р 70860—2023

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

            - 76639

            Рисунок 8 — Схематическая архитектура компонентов, работающих под управлением системы PaaS

            Внешняя конечная точка: обеспечивает конечную точку с внешним доступом (например, через Интернет) и соответствующей системой обеспечения безопасности (например, поддержка протокола https, управление сертификатами, защита от DDoS-атак, управление идентификацией и доступом).

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

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

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

            Резервные сервисы: как правило, многие функциональные возможности, необходимые компонентам приложения, предоставляются набором облачных сервисов, к которым компоненты подключаются по мере необходимости. Такие сервисы могут быть весьма разнообразными, но наиболее распространенные примеры поддерживают такие функциональные возможности, как сервисы баз данных или другие сервисы хранения данных (см. раздел 12).

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

            Инструментарий DevOps: разработчики и операционный персонал, в идеальном случае объединенные в группу специалистов в рамках концепции DevOps, используют различные инструменты DevOps в своей работе. Инструменты разработки и тестирования используются во время создания и тестирования приложения и его микросервисов, а инструменты мониторинга и управления используются для наблюдения и контроля компонентов приложения в производстве [из 11.3 Архитектура компонентов, работающих под управлением системы PaaS ГОСТ Р 70860—2023]

              Страницы

              Подписка на Из ГОСТ Р 70860—2023 Информационные технологии. Облачные вычисления. Общие технологии и методы