Компания ActiveState хорошо известна разработчикам. Они довольно активно продвигают свои сборки Perl (ActivePerl), Python (ActivePython), Tcl (ActiveTcl) (Раньше был еще ActivePHP, но сейчас его нет). У них есть отличный Komodo IDE и его урезанная бесплатная версия Komodo Edit. И недавно компания предприняла шаги к входу на рынок модных сейчас облачных технологии, но не со стороны создания своих облачных сервисов, а со стороны создания своей софтверной платформы. [Честно говоря, не совсем своей, но об этом далее :-)] Так появилась Stackato — «первая облачная платформа для создания private PaaS с поддержкой Python, Perl, Ruby, Node.js и Java».Если интересно как создать свое «облачное» Perl приложение, прошу под кат.
Stackato построена на основе Cloud Foundry (и на то были причины) и по сути расширяет Cloud Foundry, добавляя возможность развертывания приложений написанных на Perl и Python.
Архитектура Stackato не отличается от Cloud Foundry, и подробнее о некоторых частях можно прочитать в этом переводе. Я лишь приведу иллюстрацию, описывающую архитектуру, и подробнее останавливаться не буду.
Перейдем к интересному — процессу развертывания perl приложения в Stackato.
ШАГ 0: Получаем инвайт
Stackato находиться в beta версии (недавно перешла из стадии Developer Preview), и для того чтобы попробовать ее в действии нужно получить инвайт. Запросить его можно здесь.ШАГ 1: Сервер
Для того чтобы попробовать Stackato, необходимо скачать и развернуть Stackato Server VM. Распространяется в 3 форматах: vSphere (OVF), VMware Player and Fusion (VMDK),VirtualBox VM. Системные требования: x86_64 processor, 2GB+ RAM, 3GB+ free disk spaceПо умолчанию Stackato VM запускается как «micro-cloud». Это позволяет ему функционировать как stand-alone server без каких-либо дополнительных настроек. Имя сервера по умолчанию stackato.local
Сразу после первого запуска существует один пользователь stackato с паролем stackato. Также существует возможность подключение через ssh:
]$ ssh stackato@stackato.localДля изменения настроек и управления сервером используется команда stackato-admin. Подробнее о параметрах можно узнать так:
]$ stackato-admin helpА в остальном это Ubuntu 10.04 LTS со всеми вытекающими. :-)
ШАГ 2: Клиент
После установки сервера необходимо установить клиентское приложение, готовые сборки которого есть для MAC OS X, Windows и Linux. Также клиентское приложение можно установить с помощью утилиты pypm (ActivePython): ]$ pypm install stackatoвозможность установки с помощью ppm (ActivePerl) появится в ближайшее время.
После того как клиентское приложение успешно установлено, необходимо произвести некоторые настройки:
1) Установка target URL — это позволит клиенту stackato узнать, куда следует push'ить приложения. По умолчанию для локального сервера следует использовать api.stackato.local:
]$ stackato target api.stackato.local2) Регистрация пользователя Stackato. В качестве имени пользователя используется email:
]$ stackato add-user [EMAIL] [--passwd PASS]3) Вход. Команда регистрации заканчивается автоматическим логином, но если нужно войти под существующем пользователем или изменить текущего пользователя, то используется команда login:
]$ stackato login [EMAIL] [--passwd PASS]Если нужен список доступных команд или информация по конкретной команде, то необходимо использовать команду help:
]$ stackato help [COMMAND]Если клиент и сервер установлены и настроены, можно приступать к развертыванию приложения.
ШАГ 3: Развертывание
Процесс развертывания приложений может немного отличаться, в зависимости от зависимостей приложения(извините за каламбур :-)), а точнее от наличия или отсутствия интеграции с различными дополнительными сервисами(например, базами данных). Поэтому хорошим тоном является указание особенностей развертывания (если они есть) в файле README. Существует набор приложений, подготовленных специально для развертывания в Stackato, написанных на различных языках. Их можно найти здесь.К сожалению, среди этих примеров нет приложения использующего Dancer, а я предпочитаю именно этот micro web-framework. Поэтому я написал свое ОЧЕНЬ просто приложение. Его можно посмотреть и скачать здесь.Прежде чем разворачивать приложение, расскажу немного об особенностях. По сути мое приложение (simpleDancer) является дефолтным приложением, которое вы получите, воспользовавшись командой:
]$ dancer -a appNameЯ лишь добавил важные составные части, без которых созданное приложение не запустится в Stackato. Первое — это файл requirements.txt, который содержит список зависимостей, необходимых приложению:
Dancer<br/> YAML<br/> Plack::RequestВсе указанные в нем зависимости будут автоматически установлены в процессе развертывания с помощью ppm из репозитория ActiveState, а если там не будут найдены, то с помощью cpanm со cpan.
Второе — это файл app.psgi. Все Perl приложения в Stackato запускаются как PSGI приложения, и стартовый скрипт должен называться app.psgi(или app.pl) и находиться в корне приложения. Т.к. Dancer приложение может без каких-либо изменений запускаться как PSGI приложение, то достаточно было сделать ссылку на ./bin/app.pl.
Теперь, когда все формальности соблюдены, приступим к разворачиванию приложения.
Если мы находимся в корневой папке нашего приложения, то необходимо выполнить следующую команду:
]$ stackato push simpleDancerгде simpleDancer — имя приложения. Необходимо иметь в виду, что по умолчанию приложения разворачиваются с ActivePerl 5.12.4, и если надо использовать ActivePerl 5.14.1, то следует писать так:
]$ stackato push simpleDancer --runtime perl514После команды push необходимо ответить на несколько вопросов:


]$ stackato appsвыдаст следующее:

Если в процессе развертывания что-то пошло не так, или приложение не доступно, то с помощью команды logs можно посмотреть stdout и stderr:
]$ stackato logs simpleDancerЕсли ничего полезного найти не удалось, то следует посмотреть еще в двух дополнительных log файлах (staging.log и ppm4.log), доступ к которым можно получить с помощью команды files:
]$ stackato files simpleDancer logs/staging.log<br/> ]$ stackato files simpleDancer logs/ppm4.logВот вообщем-то и все, что нужно знать и иметь в виду при работе со Stackato.
Удачи с облаками :-)