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

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


Одним из таких языков является TOSCA. Он позволяет создавать декларативные описания в соответствии с набором соглашений на основе YAML, определяя управление жизненным циклом сервиса. Язык TOSCA абстрактный и гибкий, что позволяет применять его в широком спектре задач и встраивать между конечным пользователем и более низкоуровневыми инструментами автоматизации.


Важной частью стандарта является механизм Substitution Mapping, описывающий правила композиции нескольких шаблонов

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


Создание такой системы является актуальной задачей, так как на данный момент никакая система не поддерживает стандарт TOSCA, в частности Substitution Mapping, в полной мере


В качестве модельного примера мы рассматриваем воспроизводимым развёртыванием сервиса Kubernetes. Выбор мотивирован повсеместным использованием и гибкостью конфигурации системы. Это позволяет рассмотреть и проверить ограничения TOSCA.


В рамках работы необходимо …


В рамках исследования были изучены существующие системы, заявляющие поддержку TOSCA,


Наиболее примечательными оказались следующие системы:

  • A4C является развитой системой оркестрации с заявленной поддержкой TOSCA. На деле поддерживается собственная версия стандарта, слегка отклоняющаяся от исходного, что невилирует преимущества стандартизации. Заявленная поддержка substitution mapping не является полноценной, так как требует написания шаблона под каждую специализацию. В декабре 2022 года проект был заброшен, разработка приостановлена
  • Проект Ubicity является интересным для рассмотрения, так как реализует полнофункциональную поддержку SM. Однако закрытость проекта не позволяет изучить его возможности глубже
  • ИСП РАН поддерживает собственную систему оркестрации Clouni, реализующую собственный механизм, отличающийся от SM, что также не позволяет
  • Отдельно стоит выделить систему валидации и нормализации шаблонов Puccini. На данный момент эта система поддерживает наиболее широкое подмножество TOSCA, легко встраиваема в другие системы

Также в рамках работы проведено сравнение методов развёртывания Kubernetes с целью выявления достоинств и недостатков каждого, а также общих для всех методов параметров конфигурации

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

Общими для всех способов развёртывания являются


В создании архитектуры мы опираемся на высокоуровневую операционную модель, описанную в стандарте. Выделены три основные системы:

Ключевой для работы является реализация системы Resolver, так как именно она реализует Substitution Mapping


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

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


Для описания Kubernetes были разработаны шаблоны, моделирующие не только саму платформу, но и связанные предметные области, представленные на слайде