Apache CloudStack / Шлюз µAPI Gateway

Назад

CloudStack – это гибкая система, расширяемая с помощью пользовательских плагинов. Необходимость расширения CloudStack может возникнуть по многим причинам. Возможно, вы планируете использовать его как базовый продукт для разработки интегрированного решения, включающего в себя саму облачную среду IaaS/PaaS, систему биллинга, платежный шлюз, Helpdesk и такие сторонние сервисы, как объектное хранилище, управление записями DNS, интеграция с CDN и другие. Сценариев множество, они ограничены лишь потребностями организации.

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

Каждое расширение:

  • должно быть реализовано на Java (чаще всего) или на другом языке, совместимым с JRE;
  • должно использовать интерфейсы CloudStack и предоставлемые им сервисы;
  • работает внутри ядра CloudStack и может влиять на стабильную работу всего сервера управления;
  • может быть протестировано (end-to-end тестирование), только когда оно развернуто внутри сервера управления.

Данные требования отрицательно влияют на возможность реализации пользовательских функций посредством плагинов CloudStack.

В лучшем случае разработчикам приходится углубиться в изучение CloudStack и потратить много времени, чтобы многократно пройти цикл “разработка-сборка-установка-тестирование”, пока плагин не будет готов к промышленной эксплуатации. На то, чтобы пересобрать плагин, установить его в сервер управления и перезапустить его может уйти более 10 минут, что делает процесс разработки неэффективным и увеличивает время внедрения новых функций.

В худшем случае компания, желающая расширить CloudStack, столкнется с необходимостью дополнительно нанять Java-разработчика для расширения Apache CloudStack, так как с другим стеком разработки создать и интегрировать расширение невозможно.

Решение

Мы разрабатываем плагины для CloudStack. В какой-то момент мы поняли, что расходуем наши инженерные ресурсы неэффективно и тратим много времени на прохождения цикла “разработка-сборка-установка-тестирование”, используя традиционный подход, предложенный платформой CloudStack. Нам нравятся динамические языкаи программирования и альтернативные системы разработки ПО. Мы решили предоставить нашим клиента возможность разрабатывать расширения для CloudStack с помощью привычных для них платформ. Мы хотели повысить скорость разработки для CloudStack, чтобы дать возможность программистам разрабатывать расширения как можно быстрее, без лишних хлопот с хитрой сборкой толстых jar библиотек и их развертыванием на сервере управления CloudStack.

Для решения проблемы мы разработали специальное расширение под названием µAPI Gateway, которое является шлюзом аутентификации и направляет входящие запросы, проходящие через CloudStack API на маршрутизатор запросов, который обычно реализуется с помощью Nginx или HAProxy, отправляющий запросы к upstream-серверам обработки. Эти перенаправленные запросы обогащаются информацией о сессии пользователя в CloudStack, что позволяет запускать операции на удаленном сервисе с теми же учетными данными, которые используются аккаунтом, инициировавшим запрос.

Иными словами, вы устанавливаете µAPI Gateway, настраиваете Nginx как сервис маршрутизации, разрабатываете API запросы и реализуете сервис, который умеет обрабатывать запросы POST и заголовки HTTP, а в качестве ответа возвращает JSON.

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

Ниже представлена архитектура плагина µAPI Gateway:

Функциональные возможности плагина

Для упрощения разработки и поддержания современных методов разработки µAPI Gateway обеспечивает ряд концепций и функций. Самой важной из них являются области видимости.

Области видимости

Области видимости позволяют разработчикам организовывать upstream-микросервисы в логические группы на основании следующих атрибутов – среда (environment), область действия (realm), область команды (command), версия (version). Эти четыре области видимости используются для создания маршрута к конкретному микросервису.

Среда (environment) предназначена для определения различных сред развертывания микросервисов, например, “production”, “beta” and “testing”.

Область действия (realm) группирует микросервисы в приложения, например, “billing”, “payment”, “DNS” и другие.

Команда (command) определяет конкретный обработчик команды в “среде” и “области действия”.

Версия (version) позволяет поддерживать несколько версий микросервиса одновременно.

Маршрут к микросервису строится следующим образом:

<http|https>://[<login>:<password>@]<microapi.gateway.address>:<port>/<environment>/<realm>/<command>[/version]

Поскольку микросервис реализуется в виде отдельного приложения, получает информацию о расширенном API-запросе CloudStack в форме аргументов POST, информацию о сессии CloudStack в виде HTTP-заголовков, разработчики могут разрабатывать, отлаживать и разворачивать микросервисы полностью автономно с использованием технологий, соответствующих их организационным возможностям. Они могут использовать лучший отраслевой опыт, чтобы значительно ускорить доставку с использованием технологии CI/CD и проверенных практик QA.

Лицензирование

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

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

Модели лицензирования

Доступные модели лицензирования:

  • лицензия на исходный код;
  • лицензия на сервер управления;

Базовые условия лицензирования

  • Ежегодное лицензирование (1 год);
  • Электронная лицензия;
  • Платежи: безналичный платеж;
  • Программный продукт предоставляется в электронной форме;
  • Управление запросами: система Helpdesk;
  • Время ответа на запрос: 24 часа;
  • Период предоставления решения на запрос: определяется договором;
  • Реализация новых функций: определяется договором;
  • Реализация пользовательского интерфейса: определяется договором;
  • Период приемочного тестирования пользовательских функций: 1 месяц.

Для расчета стоимости, а также для получения доступа к демонстрационной версии плагина свяжитесь с нами с помощью формы внизу или напишите по адресу cloudstack@bitworks.software.

Свяжитесь с нами

Задайте вопрос об интересующем вас продукте или услуге

  • Шлюз µAPI Gateway

Спасибо за обращение. Мы свяжемся с вами в ближайшее время.