Heroku、TCPルーティングやTeam管理機能を提供へ
RubyやPython、Javaなどで書かれたWebアプリをGitのワークフローに合わせて簡単にデプロイできるPaaSプロバイダの「Heroku」(Salesforce.com傘下)が、気になる新機能を準備中です。2012年4月19日、来日中のプロダクトマネジメント担当シニアディレクターのMorten Bagaiさんに、東京・六本木で話を聞く機会を得ました。(記事初出時に肩書きに誤りがありました。修正してお詫びいたします)
注目の新機能は3つです。
- TCPルーティング
- アドオン向け従来課金API
- Team機能
これまでHerokuは、HTTPレベルでのルーティングを行っていましたが、TCPルーティングも可能にするべく模索しているそうです。TCPルーティングには2つの意味があると思います。
1つは、WebSocket対応です。これまでHerokuでは、Pusherなど外部サービスを使うことでしかWebSocketは使えませんでした。このため、例えば現在のスタックでNode.js+Socket.IOでリアルタイムなWebアプリを作るとなると、WebSocketからロングポーリングに切り替える設定が必要です。
もう1つ、TCPルーティングが可能になれば、例えば、Skypeのようなストリーミング系のアプリケーションやメッセージサービスのようなミドルウェアが扱いやすくなるでしょう。こうしたサービスを提供するアドオンベンダにとっては福音となるかもしれません。
注目の新機能の2つめは、アドオン向け従来課金APIの開放です。
従来、サードパーティベンダがアドオンを提供する場合、段階的な課金メニューとならざるを得ませんでした。例えば、Redis To Goなら、無償(5MB)/Mini(月額5ドル、20MB)/Small(月額25ドル、100MB)といった具合です。これはこれでシンプルで良いのですが、メール受信のアドオン「CloudMailIn」やスケーラブルなメッセージキューのアドオン「IronMQ」といったアドオンなら従量制のほうが良いかもしれません。今のところ、Herokuの課金インフラの実装と、どういった提供形態にすべきかということを模索している段階だそうです。
PaaSとしてのHerokuのポリシーがよく分かるのは、Mortenさんの次のような発言です。
「(従量制課金について)われわれが気を付けないといけないのは、もし複雑なものをユーザーに見せてしまったら、ユーザーは月末にコストがいくらになるのか分からないという事態になりかねません。だからわれわれは課金モデルとして、もともと定額メニューのものしか用意しなかったのです。今でもわれわれはこのシンプルさを気に入っています」(Morten Bagaiさん)
これはIaaSとして人気のAWSと異なる点です。
「Amazonはすべてのギア(注:調整のための機械のパーツという意味)を顧客に見せるのを原則としていて、それは非常にすばらしいことです。細かくコントロールできるのが重要なのです。IaaSとPaaSは違うもので、われわれPaaSベンダはより抽象度の高いプラットフォームを提供しているのです」(同)
マルチ・リージョン(グローバル・ルーティング)対応も同じことですが、新機能の実装は技術が難しいというよりも、どういうモデルがPaaSとして正しいのかを考えることだといいます。
ちょっと余談ですが、この従量課金インフラの一部はGo言語で書かれているそうです。Herokuでは、自分たちが開発したサービスやプロダクトを、まず自分自身で使うという“ドッグ・フーディング”を重視しているので、ポリグロット(1人の開発者や1つのプラットフォームが複数の開発言語を使う・対応すること)ということを唱道する以上、自ら多様な言語やフレームワークを使おうという開発者が多いのだそうです。Go言語を使ってインフラの一部の書いた、というのには、そういう意味合いもあるといいます。
さて、3つ目の注目新機能は、チーム単位でアプリが管理できる機能です。名称未定だそうですが、Heroku内部でTeamと呼んでいるそうです。これまでHerokuを使ってチームでアプリ開発をするときには、個別にユーザーアカウント(メールアドレス≒公開鍵)をアプリ単位でコマンドラインから足していくしか方法がありませんでした。新しいTeam機能では、複数プロジェクトに対して複数開発者がいる場合に、権限管理などが可能になるようです。ステージング環境やプロダクション環境という区別についても、分かりやすくすることを考えているといいます。
Mortenさんによれば、これらの機能は近いうちにリリースされるもので、一部はすでにリアルユーザーが使い始めているといいます。こうやって新機能が利用できるユーザーの幅を広げていく手順というのは、Herokuのプラットフォーム自体が持っている「Feature Flag」(機能フラグ)という機能で実現しているといいます。何か新機能を実装したら、プロダクション環境で実際に限定的に少数のユーザーやグループに公開して、フィードバックを得て、それから徐々にその機能の提供範囲を広げていく、というアプローチです。
Herokuは従来の大手IT企業と違って、中長期的なロードマップを示したり、新機能について事前にアナウンスすることはありません。その代わり、リリースすることを前提として実装中の新機能については、特に隠すことなく、コミュニティの場で語ることがあります。上に挙げた3つの新機能も、これまでにもユーザーイベントで紹介されたことがあるものだといいます。
「事前アナウンスというのはHerokuではやりません。われわれが新機能をブログなどでアナウンスするときは、その機能が実際に利用できるようになったときです。ただ、利用者からフィードバックを受けることに関心があるので、リリース前にお話しすることがあります」(Morten Bagaiさん)
マルチ・リージョン(グローバル・ルーティング)対応についても、あちこちで語っているので、これらの新機能のリリースは、すべて時間の問題ということで、楽しみですね。