2013年12月25日水曜日

Engine YardとHeroku -PaaS3-

今回はEngine YardHerokuについて考察しようと思う。
2社に共通なのはオブジェクト指向スクリプト言語Rubyのクラウドサービスからスタートしたことである。この両社の変遷を見ることで、今後の市場動向を垣間見ることが出来るかもしれない。 

=自主路線を行くEngine Yard=
Engine Yardの設立は2006年。PaaSの世界の草分けと言ってよい。共同創業者のひとりEzra Zygmuntowicz氏は、RoR(Ruby on Rails)のMVCアーキテクチャの基となったMerbを開発した人である。周知のように、RoR3はMerbが統合されたものだ。RoRはWebアプリケーションのフレームワークとして人気が高く、単にレイルズ(Rails)とも呼ばれ、必要なコンポーネントは初期設定に従って、自動的に結合される。Engine Yardの仕組みはシンプルだ。デベロッパーはスクリプトを書き、用意されているMRI(Matz’ Ruby Implementation)やJRubyREE(Ruby Enterprise Edition)などのインタープリターで処理、必要なコンポーネントを付加してRuby Runtime上で実行する。利用に当たって、まずEngine Yardのサイト上でアカウントを作り、各種の初期設定をする。実行はRackアプリケーションなら何でも構わない。

Engine Yardは創業時からホスティングによる自社データセンターを運用してきた。そして2009年、Amazonからの出資を受け入れ、AWS上でのサービスに切り替えた。翌2010年にはTerremark International(現Verizon傘下)と提携、さらに今年7月にはWindows AzureのMicrosoft、9月にはOracle Cloudを運営するOracleとも提携し、世界中の彼らが持つデータセンターからサービスが出来るよう鋭意整備中だ。また同社は、2011年、PHPアプリケーション向けPaaSベンダーのOrchestraを買収、Rubyに加えPHPのサービスを開始した。さらに現在はJavaNode.jsなどもサポートする。同社の強みは2つ。ひとつは同社のエンジニアリング力をバックとした有償デベロッパーサポートだ。Engine Yardは全世界を3つのタイムゾーンに分け、24時間体制でデベロッパー支援チケットシステムを運用している。RubyやMerbがオープンソースであるように、同社は多くのオープンソースプロジェクトを支援してきた。Railsの従属性を管理するBundlerやRubyインタープリターのJava実装版JRuby、Rubyバージョン管理のRVM、RubyのクラウドサービスライブラリFogなどだ。これらコミュニティーとの連携が同社の力の源泉であり、財産でもある。もうひとつの強みは“Single Tenant”環境の提供だ。Engine Yardのプラットフォームは、デベロッパーが意識することなくAWS上のインスタンスを起動し、アプリケーションの実行と運用をシングルテナントとして行う。コンポーネントの設定や管理は勿論、バックアップやライフサイクルなどのオーケストレーションも自動的で完璧だ。

=Salesforce傘下となったHeroku=
Herokuの設立は2007年、何とも不思議な名前だ。名前の由来はヒーロー(Hero)と俳句(Haiku)を組み合わせたものだという。Rubyを開発したまつもとゆきひろ氏(同社Rubyチーフアーキテクト)にちなんで日本語を用い、Rubyクラウドのヒーローを目指す。Herokuの最大の特徴はDynoにある。これはLXC(Linux Containers)を使った安全な実行ユニットだ。LXCはUnixから引き継がれてきたOSレベルの仮想化技術で、Dynoは1CPU+512KBが単位である。全てのアプリケーションはDyno上で実行される。必要があれば2倍にスケールアップしたり、複数個のDynoを動かすスケールアウトも出来る。特にScalaなどの並列処理や大規模処理を必要とするWebアプリケーションではDynoのスケールアウト/アップが効果的だ。

Herokuの変遷はどうか。同社も当初はRubyの自社データセンターホスティングだった。しかしすぐにAWSにスイッチ。ここまではEngine Yardとまったく同じだ。そして2010年、Salesforce.comによる買収という大きな転機を迎えた。その後、一時期、Force.comに組み込まれる計画が噂されたが、実行プラットフォームは現在もAWSのままである。周知のように、Salesforce.comはCRMの雄として代表的なSaaSだが、HerokuはPaaSだ。本来、Salesforce.comは同じプラットフォーム上の階層的なサービスとして提供したかったに違いない。代わって採った戦略がプロダクトの多面化である。ひとつはサポート言語の拡大だ。Rubyから始まったHerokuは、現在、Java、Node.js、ScalaClojurePythonPlayへと広げ、さらにBuildpacksを使えばPHPは勿論、他の言語も実質的にサポートできる。2つ目は各種のアドオン、整備の甲斐あってAdd-on Marketplaceへと成長した。

=今後はどうなるか=
市場はIaaSが一段落して、ひとつ上のPaaSへとシフトしつつある。
PaaS市場ではWindows Azureが.NET環境を提供し、今回紹介した2社以外にも前回紹介したOpenShift前々回Pivotalなどが追従し、複数言語の開発環境を提供し始めた。更にこれまでPythonだけをサポートしてきたGoogle App EngineがJavaを扱い、AzureもJavaもサポート、Amazonは既にAWS Elastic Beanstalkで進出し、完全な混戦状態となりつつある。中でも、先発2社、Engine YardとHerokuはガチンコ勝負だ。Engine Yardは日本市場にも昨年3月に進出、デベロッパーサポートと全世界展開の提携先データセンターでグローバルリーチを目指す。対するHerokuは、広範囲なプロダクト戦略で受けて立つ。Engine Yardの現CEO John Dillon氏はSalesforce.comがASPと呼ばれていた頃(1999~2001)のCEOだ。HerokuはそのSalesfoceの傘下となってプロダクトを整備拡張してきた。何とも皮肉な巡り会わせだが、これからは低価格化を強いられる。戦いはまだまだこれからだ。