Which is the best choice for the Japanese Octopress blogger

そういえば、Herokuにblogを置く事しか考えてなかったけど、他のPaaSとの比較を全然してなかった。その結果、日本でブログを作るには、実はappfogの方がいいんじゃないかという結論に至った。

PaaS majority

PaaSの選定に当たっては、以下3点を基準とした。それぞれ、優先順位となる。

  1. Octopressでブログをホストできること
  2. 無料プランがあること
  3. より日本に近い場所でホスト可能であること

今回の選定に当たって、調査したのは以下の5つ。rubyが使えるPaaSとしてはメジャーなところではないかと思う。

Heroku

当初予定していたPaaSで、Ruby on RailsのPaaSとしては、一番の有名どころじゃないかと思う。webサイトがダークな感じで、若干見づらいのが難点。

ま、予定してたぐらいだし、実際に使ってみて、Octopressブログのホストには、十分使えるレベルである、というのは分かった。気になったのは次の2点。

  1. レスポンスが遅い
  2. 一定時間、アクセスが無いとアプリが停止される

1に関しては、日本に近いリージョンじゃないとどうしようもない。これがPaaS見直しのきっかけとなった。

2に関しては、実はherokuのaddonを使って、一定間隔でアクセスしておくことで回避可能だ。しかし、他のPaaSを使うことで回避可能であれば、その方が好ましい。

herokuの特徴は、addonの種類の豊富さだと思う。

addon選択画面
addon選択画面

Engine Yard Cloud

完全従量課金制のPaaS。探してみたけれど、どうやら無料プランはなさそうだ。日本語のwebサイトがあるのは、好ましいね。ラインナップは大きく2つあるようだ。

webサイトを見る限り、Engine Yard Cloudでは、AWSの存在がかなり見えているように思う。しかし、7つのリージョンを選択できるというメリットがあるそうだ。日本のユーザーにとって、これはいいね。PaaSというよりは、IaaSレイヤーの管理ツールと捉えた方がいいのかもしれない(実際にアプリを作るところまで試していないので、全然間違っている解釈の恐れあり)。

しかし、無料プランがなさそうなので、今回は選択肢から外れる。

appfog

appfogは無料で使えるプランがあり、多言語に対応したPaaS。若干古いバージョンのものもある。

step1
appfog step1

rubyのバージョンなどは表示されていないが、appfogのコマンドラインツールであるafコマンドで、サポートされているランタイムを確認することができる。

$ af runtimes
+--------------+-------------+---------+
| Name | Description | Version |
+--------------+-------------+---------+
| java | | 1.7.0 |
| php | | 5.3.10 |
| ruby18 | | 1.8.7 |
| ruby192 | | 1.9.2 |
| ruby193 | | 1.9.3 |
| python2 | | 2.7.3 |
| node04 | | 0.4.12 |
| node06 | | 0.6.17 |
| node08 | | 0.8.14 |
| erlangR14B02 | | 5.8.3 |
+--------------+-------------+---------+

appfogの特徴は、IaaSレイヤーを選択できること。ログイン後に画面上部のCreate Appから新しいアプリケーションの選択ができる。

step2
appfog 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
openshift step1
step2
openshift step2
step3
openshift 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

つい最近トラブルが発覚したニュースがあった。まぁそれだけ人気が出た証拠なんだろうと思うとともに、早く収束することを願います。

Engine Yard news

appfog news

dotCloud news