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.