Octpressに最適なPaaSはappfogか
Which is the best choice for the Japanese Octopress blogger
そういえば、Herokuにblogを置く事しか考えてなかったけど、他のPaaSとの比較を全然してなかった。その結果、日本でブログを作るには、実はappfogの方がいいんじゃないかという結論に至った。
PaaS majority
PaaSの選定に当たっては、以下3点を基準とした。それぞれ、優先順位となる。
- Octopressでブログをホストできること
- 無料プランがあること
- より日本に近い場所でホスト可能であること
今回の選定に当たって、調査したのは以下の5つ。rubyが使えるPaaSとしてはメジャーなところではないかと思う。
Heroku
当初予定していたPaaSで、Ruby on RailsのPaaSとしては、一番の有名どころじゃないかと思う。webサイトがダークな感じで、若干見づらいのが難点。
ま、予定してたぐらいだし、実際に使ってみて、Octopressブログのホストには、十分使えるレベルである、というのは分かった。気になったのは次の2点。
- レスポンスが遅い
- 一定時間、アクセスが無いとアプリが停止される
1に関しては、日本に近いリージョンじゃないとどうしようもない。これがPaaS見直しのきっかけとなった。
2に関しては、実はherokuのaddonを使って、一定間隔でアクセスしておくことで回避可能だ。しかし、他のPaaSを使うことで回避可能であれば、その方が好ましい。
herokuの特徴は、addonの種類の豊富さだと思う。
- addon選択画面
Engine Yard Cloud
完全従量課金制のPaaS。探してみたけれど、どうやら無料プランはなさそうだ。日本語のwebサイトがあるのは、好ましいね。ラインナップは大きく2つあるようだ。
webサイトを見る限り、Engine Yard Cloudでは、AWSの存在がかなり見えているように思う。しかし、7つのリージョンを選択できるというメリットがあるそうだ。日本のユーザーにとって、これはいいね。PaaSというよりは、IaaSレイヤーの管理ツールと捉えた方がいいのかもしれない(実際にアプリを作るところまで試していないので、全然間違っている解釈の恐れあり)。
しかし、無料プランがなさそうなので、今回は選択肢から外れる。
appfog
appfogは無料で使えるプランがあり、多言語に対応したPaaS。若干古いバージョンのものもある。
- step1
rubyのバージョンなどは表示されていないが、appfogのコマンドラインツールであるafコマンドで、サポートされているランタイムを確認することができる。
appfogの特徴は、IaaSレイヤーを選択できること。ログイン後に画面上部のCreate Appから新しいアプリケーションの選択ができる。
- step2
このstep2ではAWS Asia Southeastが選択できる。日本に住む自分には、当然US EastやEurope Westよりもシンガポールの方が地理的に近い。
実際に試してみると、herokuでは200ms、appfogでは100msのレスポンスタイムとなった。体感的には圧倒的にappfogの方が速く感じる。
herokuの場合には、一定時間アクセスが無いと、アプリケーションが落とされるそうで、その後にアクセスすると数秒間レスポンスが返ってこない事になる。appfogの場合は、一晩経っても500ms程度でレスポンスが返ってくる。大してPVの多いブログでもないので、このレスポンスの差はかなり大きいように思う。
Octopressの場合、step1でRuby Sinatraを選択する(のが正しいのか?)。注意点としては、herokuでそのまま動いていたコードを、そのままappfogにデプロイすると、起動しない事だ。詳細については次のエントリーに書きたいと思う。
コマンドラインツールからのデプロイ時に、しばしばエラーが発生して、webコンソールからアプリを起動し直すことがあるため、この点は早急に対応されることを願う。仕事では、まだ使えないかな。今回は自分のブログなので、SLAは全然高くなくてもいいので、appfogを試してみようと思う。
dotCloud
多言語対応のPaaS。開発時は無料で使える(experiment for free)が、公開時には無料プランはないらしい。AWSリージョン、あるいはホスティングの場所について記載が見当たらなかったため、試してない。
dotCloudと試してみた記事があった。
OpenShift
redhatが提供している多言語対応のPaaS。rubyは1.9と1.8が選択できる。ちなみにPHPは5.3だったが、ZendServer 5.6が使える珍しいPaaSだ。現時点での最新版はPHP5.4、5.3ともにZendServer 6.0である。実際にアプリを作ってみると、レスポンスが500ms程度だったため、今回は選択肢から外れる。
- step1
- step2
- step3
Conclusion: appfog is the best choice for the Japanese Octopress blogger
いくつか見た中で、気になった点を。
- プログラミング言語、フレームワーク、ライブラリのバージョンが記載されていない
- バージョンアップのポリシーが記載されていない
というのは改善して欲しい。使わないとバージョンが分からない、というのは、利用者にとって選定の手間となる。さらに、脆弱性の報告が多くあがっているJDKがいい例だが、バージョンアップのポリシーが記載されていないと、開発者として、どう対応すべきかが分からない。最悪アプリを落とすことを想定して、他のPaaSに移行するべきなのかもしれないし。
今回の選定には全く関係ない話。
PHPが未だに5.3だけしかサポートしてないところは何でだろう。php-buildとphpenvがあるわけだから、5.4の環境はすぐに作れると思うし、バージョンアップ、あるいはサポート対象とする上で、ブロックする要因があれば、webサイトやドキュメントに記載してほしい。単にPaaSでPHPが使われていないだけなのかもしれないけれど。
Reference
Heroku news
つい最近トラブルが発覚したニュースがあった。まぁそれだけ人気が出た証拠なんだろうと思うとともに、早く収束することを願います。
- [速報]まつもとゆきひろ氏、米HerokuのRubyチーフアーキテクトに就任
- Herokuがレイテンシ問題について詳細説明
- 「Herokuにだまされた」――新興企業の指摘にHerokuが謝罪
- Heroku Dataclips 2.0 - データ版Gist - 10日前のこの記事、全然知らなかった。データ版Gistってことですごく面白そうだ。ここがデータリポジトリになって、それを利用したアプリが作れるようになるのかな?
Engine Yard news
- PaaSベンダのEngine Yardが日本で事業を開始
- Engine Yard が先導するパブリッククラウド用のローカル開発環境
- オラクルがEngine Yardに出資。Oracle CloudでRuby、PHP、Node.jsのPaaS実現へ
- Engine Yard、クラウドと同じRoR/PHP/Node.js環境をローカルに構築する「Engine Yard Local」無償公開
- Ruby PaaSのEngine Yardが日本で本格展開。IIJの「Mogok」も来月オープン予定と、Ruby PaaSが相次いで登場
appfog news
- Windows Azure上に「仮想Cloud Foundry」を構築。AmazonとAzureのアプリ互換を実現したAppFog
- “AWSこけたらみなこける”の打開策としてAppFogとRackspaceがマルチクラウドPaaSを準備 - そか。cloud foundry使ってるのか、とこの記事を読んで知った。どうりでコマンドが似てるはずだ。