Perl版のHerokuを作りたい

発端

最近Salesforceに買われたのでちまたでも有名になったHeroku,RubyOnRailsをオンデマンドで使う事ができるサービスです.このサービスではgitで管理しているソースをHeroku環境にデプロイしてmakeするとwebアプリケーションを実行できます.似たようなことをPerlでもやってみたいなと思っていました.
一方で子飼さんが作ったlleval - run codes from your browserというサービスと,これを元にした宮川さんのhttp://sunaba.plackperl.org/app/jrl_h69c3xgmlha_byudvgというサービス(というかproof-of-conceptかな)が動いています.これらの巨人(子飼さんはともかく宮川さんはでかくないけど)の偉業を足がかりにすればできるんじゃないかと思いつきました.
そして,最近iTunes App StoreCodeToGoというアプリを見つけて,もしかしたらニーズもあるかもしれないと思うようになりました.ビジネスモデルは(苦手だから)後回しにして,とりあえず動きそうなアーキテクチャを考えてみることにしました.

構想

アーキテクチャに名前がないと説明しにくいのでHakoniwa(箱庭)という名前を付けてみました.まず,ローカル環境に必要なアプリケーションをインストールして,

$ cpanm App::Hakoniwa

例えば,bonsan(盆山)ってwebアプリを作る場合には

$ hakoniwa create bonsan

とします.するとHakoniwaがaws(amazon web service)上にbonsan.hakoniwa.com, bonsan.api.hakoniwa.comという名前のサーバ(AMIインスタンス)用意します.bonsan.hakoniwa.comにはsunaba(もしくはその拡張)が,bonsan.api.hakoniwa.comにはlleval(の移植版)が動きます.
次にデプロイするにはgitを使います.Hakoniwaが必要な環境変数(の初期値を)用意しておけばgitがそのまま使えるかなと.

$ git push hakoniwa master

アプリケーションを起動はこれでいいかな.

$ hakoniwa plackup bonsan

負荷分散は要求に応じてbonsan001, bonsan002...とアプリケーションサーバを増やして,それをsunabaに組み込んだproxy機能で分散させればいいと思っています.
hakoniwaのコマンドオプションはこれぐらいあればいいかと.

$ hakoniwa --help
help                 # show this usage
version              # show hakoniwa version
list                 # list your apps
create <name>        # create a new app
destroy <name>       # destroy the app permanently
info [<name>]        # show app info, like web url and git rep
api:add [<num>]      # add api server
api:del [<num>]      # delete api server
keys                 # show your user's public keys
keys:add [<path to keyfile>] # add a public key
keys:remove <keyname>        # remove a key by keyname
keys:clear                   # remove all keys
domains:add <domain>         # add a custom domain name
domains:remove <domain>      # remove a custom domain name
domains:clear                # remove all custom domains
ssl:add <pem> <key>          # add SSL cert to the app
ssl:remove <domain>          # removes SSL cert from the app domain
pm                           # list installed modules
pm:install <perl_module>     # install the module from CPAN
pm:uninstall <perl_nmodule>  # remove mod
pm:update <perl_module>      # update specified module

apiサーバが複数あるからsshして作業するわけにはいかないだろうから,capistranoも使えるようにする必要があるかもしれないなぁ.とまぁ,こんな記事を書いておいたら誰か作ってくれないかな,と淡い期待.それともこんな仕組みには誰も興味ないでしょうか.