“Платформы-как-сервисы” (platform as a service, PaaS), находящиеся на острие облачных вычислений, в минувшем году получили серьезное развитие. Новые онлайновые продукты и проекты позволяют абстрагироваться от деталей развертывания приложений и фокусируют разработчиков прежде всего на программном коде.

Ранее большинство программных продуктов для PaaS ориентировалось на языки Java и Python в комплексе со множеством приложений с открытым кодом. За исключением сервиса Azure корпорации Microsoft большинство платформ PaaS обходят вниманием платформу Microsoft .NET.

Ситуация меняется с появлением ориентированных на .NET продуктов, например Apprenda 3.0 компании Apprenda, позволяющего организациям развертывать свои собственные платформы.NET PaaS на базе веб-компонентов Microsoft.

Apprenda 3.0 является частной платформой PaaS, которую можно развернуть в дата-центре компании или в публичном облаке, таком как сервис Amazon Elastic Cloud Compute (EC2). Организации устанавливают Apprenda на одном или нескольких компьютерах, и это ПО собирает отдельные приложения и базы данных (БД) в единую хостинговую платформу.

Тестируя Apprenda 3.0 в нашей лаборатории на компьютере с Windows 7, я фокусировался на важных для разработчика аспектах — например, на возможности публикации уже существующих приложений. Могу сказать, что продукт прост в установке и использовании. Развертывание стандартных .NET-приложений также было простым и потребовало лишь незначительной модификации кода.

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

Комплект Apprenda версии Express доступен свободно, но ограничен объёмом оперативной памяти 12 Гб на управляемый кластер. Цена полнофункциональной версии зависит от величины ОЗУ.

Apprenda в лаборатории

Тестирование началось с загрузки Apprenda Express и запуска программы установки на компьютере с 64-разрядной Windows 7. Программа проверила наличие и запросила установку необходимых веб-компонентов Microsoft, в том числе IIS 7, SQL Server Express и Visual Studio Express. Я выполнил требования с помощью инструмента Microsoft Web Platform Installer.

Кроме того, я загрузил и установил SDK для Apprenda, в состав которого входят шаблоны для Visual Studio. Согласно руководству для разработчика мною был использован шаблон Apprenda для первого проекта — простого приложения “hello world”, взаимодействующего с БД. Написав приложение, я пропустил проект через компоновщик архива развертывания.

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

Для развертывания имеющихся приложений я выбрал несколько популярных приложений .NET из проекта Microsoft Codeplex. Начал я с Blog-Engine.NET, сконфигурировав его для работы с БД вместо используемого по умолчанию XML-файла.

Затем я использовал строку подключения к базе данных $#APPLICATIONCONNECTIONSTRING#$. Система Apprenda во время развертывания заменяет шаблон на корректное значение. Упаковка кода в архив для развертывания включает в себя размещение файлов в каталоге “root\ interfaces”. В составе архива проекта BlogEngine был SQL-скрипт (MSSQLSetup2.5.0.0.sql) для создания необходимых таблиц. Я переименовал файл в ApplicationProvisioning_Script.sql и расположил его в каталоге “persistence\scripts”. Каталоги persistence и interfaces я упаковал в zip-файл, подготовив для развертывания.

Затем я протестировал приложение Umbraco CMS, в состав которого не входят SQL-скрипты для создания таблиц. Программа установки Umbraco сама создает таблицы в существующей базе данных. Я включил пустой скрипт ApplicationProvisioning_ Script.sql в архив для развертывания, тем самым указав Apprenda на необходимость создания пустой БД.

После запуска программа установки Umbraco CMS запросила учетные данные для доступа к ассоциированной БД и завершения процесса установки. Учетные данные я сконфигурировал с помощью консоли управления на портале Apprenda для разработчиков.

Bug-NET было третьим приложением, которое я протестировал. Оно требует модификации разрешений для файлов и папок. Поскольку это невозможно выполнить из интерфейса Apprenda, мне пришлось модифицировать установку Apprenda (можно модифицировать приложение, чтобы оно не требовало специфических разрешений).

Для каждого из моих тестовых приложений перед загрузкой архива для развертывания я обращался к веб-консоли разработчика, чтобы дать приложению имя и краткое описание в сервисе Apprenda. После загрузки система Apprenda проверяла наличие необходимых элементов, таких как скрипт для БД, и дополнительно запрашивала отсутствующие.

Когда я загрузил мой архив для развертывания Umbraco CMS, система уведомила о том, что не поддерживается использование атрибутов “configSource” для ссылки на отдельные конфигурационные файлы в web.config. Как и предлагалось в сообщении об ошибке, я поместил эти конфигурационные элементы в главный конфигурационный файл.

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