Господин Журден из пьесы Мольера «Мещанин во дворянстве» был несказанно удивлен, узнав, что сорок лет говорил прозой. Нечто похожее предстоит пережить и всем нам: единственная, а потому не имеющая имени собственного, существовавшая более 60 лет схема распространения программного обеспечения, предполагающая его установку на месте исполнения, сегодня получила специальное название on-premise, поскольку для нее теперь есть альтернатива. Скорее всего, термин этот заимствован из области телекоммуникаций, где он используется в качестве указания на установку оборудования по месту использования, а парный ему off-premise означает обратную процедуру. Традиционно между компьютерами и установленным на них программным обеспечением было однозначное соответствие, но с появлением крупных центров обработки данных и идей Cloud Computing оно исчезает, и на сцену появляется подход, получивший название платформa как сервис (Platform as a Service, PaaS).
С точки зрения разработчика любая платформа для поддержки приложений, попадающая в категорию PaaS, представляет собой набор технологий и инструментов, необходимых для разработки, внедрения, интеграции и размещения программ, предоставляемых как сервисы (Software as a Service, SaaS). Будучи сетевым по сути, по своей форме этот тип платформ состоит практически из тех же самых компонентов, что и традиционные платформы, но в данном случае эти компоненты представлены в форме сетевых ресурсов. Существует несколько заметно различающихся между собой подходов к созданию платформ PaaS. В наиболее общем виде их можно представить, как это обычно делается со времен семиуровневой модели OSI. В основании модели лежат аппаратные и программные технологии, предоставляющие виртуализованные вычислительные ресурсы. Выше с использованием того, что сегодня называют Cloud Computing, эти ресурсы собираются в «облака» и переводятся в форму сервисов. Еще выше располагаются средства для «коммунального» доступа к данным и метаданным, а на вершине — интерфейсы API и интеграционные средства.
Первостепенное достоинство любой многоуровневой модели состоит в возможности распределения ролей между множеством участников рынка, когда каждый вендор может выбрать для приложения собственных сил ту или иную часть стека. В зависимости от избранной стратегии вендоров можно разделить на три основные группы.
Application Platform. В эту категорию попадают компании, первыми вышедшие на рынок SaaS, прежде всего, Webex, Netsuite, Salesforse.com. Они перекрывают весь стек модели, предоставляя возможность использования только API или же завершенную среду для разработки и внедрения приложений.
Deployment Platform. Поставщики, занимающие уровни от второго до шестого, предоставляют платформу для внедрения приложений, а все остальное отдают на откуп пользователя. Основные действующие лица в сегменте Cloud Computing («вычисления в облаке») — Amazon и Google, а в сегменте, который сейчас называют Managed Hosting («управляемый хостинг») — Opsourse, IBM, Rackspace, Savis. Проводя аналогию с традиционным подходом, можно сказать, что такие платформы занимают место, аналогичное серверам и операционным системам.
Development Platform. Естественно, что в дополнение к платформам для внедрения должны были появиться и платформы для разработки приложений, занимающие верхний уровень в модели PaaS. Вендоры этой категории предоставляют интегрированные средства для разработки и возможности размещения своих приложений на платформе внедрения. Для создания и внедрения приложений могут использоваться классические технологии Java и .Net, а также технологии, специально ориентированные на разработку «облачных приложений». Пока группа компаний, предоставляющих технологии для разработки приложений такого рода, немногочисленна; ее составляют «стартапы» вроде Bungee Labs, Comrange (Opsource), IT Factory и Coghead.
Компоненты PaaS
Почти во всех публикациях, так или иначе связанных с сервисной платформой PaaS, служащей основой Cloud Computing, упоминается прежде никому неизвестная компания Bungee Labs. Компания еще очень молода. Ее единственный продукт Bungee Connect, представляющий собой интегрированную среду для разработки и внедрения (именно внедрения!) приложений, предложен для бета-тестирования всего год назад. Bungee Connect ориентирован на разработчиков, которые хотели бы оторваться от привычного окружения и броситься в новую для себя среду Web-программирования. Отсюда и название, однозначно указывающее на «банджи–джампинг» (bungee jumping) — прыжки с резиновыми амортизаторами с большой высоты (у нас этот аттракцион часто называют «тарзанкой».
С Bungee Labs связано еще несколько любопытных фактов. Одним из ее основателей и главным публичным лицом, представляющим компанию, является Алекс Барнетт, когда-то весьма известный профессиональный игрок в английский крикет, а в недавнем прошлом — менеджер корпорации Microsoft. Компания Bungee Labs относится к новому поколению современных «стартапов», которые открываются в штате Юта. Аналитик рынка компания Robin Bloor поставила Bungee Labs на третье место в десятке наиболее перспективных фирм на 2008-2009 годы. (Любопытно, что наряду с молодыми и относительно небольшими компаниями, обычно образующими список, на этот раз в него вошла и Citrix.)
Вот как Барнетт определяет кредо своей компании: «То, что предлагает Bungee Labs, точнее всего назвать ‘разработка как сервис’ (Development as a Service) плюс к тому ‘внедрение как сервис’ (Deployment as a Service). Однако мы предпочитаем Platform as a Service потому, что сейчас принят именно он. Так говорят все, но наше отличие в том, что мы используем этот термин, получивший наибольшее распространение, совершенно конкретно. Bungee Connect обеспечивает поддержку всего цикла создания программного обеспечения, поддерживающая его платформа позволяет разработать приложение, протестировать его, объединить с другими сервисами и запустить в эксплуатацию в виде сервисов. Конечная точка пути — URL, указатель на источник, откуда пользователи могут получать необходимые им сервисы. Разработчику PaaS представляется некоторой средой, обладающей необходимой масштабируемостью, безопасностью и надежностью. После внедрения в нее он свободен от забот об инфраструктуре, размещенной в каком-то удаленном центре обработки данных».
Bungee Connect открывает неожиданную перспективу для любого разработчика. Он может совершенно самостоятельно создать и внедрить свой продукт, а затем получать от этого внедрения прибыль, не вкладывая ничего, кроме собственного труда и знания. Интегрированная среда Bungee Connect ориентирована на создание приложений, использующих методы асинхронной загрузки контента AJAX (Asynchronous JavaScript and XML), которые далее могут быть размещены на платформах Amazon, Google, PayPal, Salesforce.com, eBay и т.п. Что же касается документальной поддержки Bungee Connect, то она выше всяких похвал, содержит все необходимые учебные, справочные материалы, включая видеодемонстрации, в результате от момента принятия решения об использовании этой среды до начала продуктивной работы уходит минимальное время.
Чтобы приступить к работе с Bungee Connect, не требуется выполнять каких-либо действий для загрузки и инсталляции. Все действия, связанные с интегрированной средой разработки, осуществляются с браузере. Среда Bungee Connect поддерживает браузеры Firefox, Internet Explorer и Safari. Но работа в режиме онлайн имеет не только преимущества, но и недостатки. Главный из них — зависимость от сети; если она ненадежна, то возможны перерывы в работе, а если недостаточно производительна, то вероятно замедление. В условиях больших корпораций или в государственных организациях хранение кода в «облаке» может войти в конфликт с требованиями безопасности; в таких случаях предпочтительнее локальное размещение кодов. Пока Bungee Connect интегрирован только с СУБД MySQL, но в следующих выпусках планируется поддержка PostgreSQL.
К достоинствам подобного решения следует отнести и то, что какой-либо финансовый порог вхождения в него отсутствует — модель оплаты за пользование Bungee Connect построена по принципу «сначала разработай и внедри, а потом будешь платить отчисления». Доступ к платформе совершенно свободен и бесплатен, а кроме того, разработчик может размещать свой продукт на сервере Subversion, обеспечивающем управление версиями, пользование им также бесплатно. Оплата начинается с того момента, когда созданное и размещенное на одном из бесплатных ресурсов приложение начинает пользоваться спросом. В таком случае разработчик получает причитающиеся ему отчисления, за вычетом одного доллара за каждый час работы приложения, который удерживается в пользу Bungee Labs.
Схема. Компоненты PaaS