Cloud FoundryのチームはCloud Foundry Coreを発表した。これは共通の機能を元に、パブリックインスタンス(Cloud Foundry Endpoints)を検証するアプリケーションだ。この機能でクラウドのユーザはあらかじめCloud Foundryのアプリケーションを他のクラウドへ移行できるかどうかを確認できる。サポートしているランタイムやサービスを検知できるのだ。
Cloud FoundryはオープンソースPaaSで元はVMware/SpringSourceが開発していた。それから、コードがオープンになり、誰でも自分のプライベートクラウドインスタンスを作成して互換性のあるアプリケーションをローカル環境に配置できるようになった。Cloud Foundryの実装のパブリックインスタンスを作成し、機能や料金を差別化しようとしている企業/パートナーもいる。
現時点ではCloud Foundryの実装には次のものがある。
- VMwareの公式のパブリックインスタンス
- 開発中に利用するMicro Cloud Foundry(ローカルのひとつのVMで動く)
- AppFogのパブリックインスタンス(PHPをサポート)
- Iron FoundryのパブリックインスタンスTier 3 (.NETに力を入れている)
- Uhuruのパブリックインスタンス(.NETをサポート)
これらの実装は基本的なサービスは同じだが、まったく同一ではない。異なるプログラミングプラットフォームをサポートしている場合もあれば、同じプラットフォームをサポートしていてもバージョンが異なる場合もある。理論的にはクラウドアプリケーションはこれらすべてのプラットフォームで互換性があるべきだが、実際には移行するアプリケーションは移行先のプラットフォームが提供していないサービスやバージョンの違うサービスを利用している可能性がある。特定のクラウドプロバイダに投資したくないユーザにとってこれは大きな欠点だ。
クラウド間の相互運用性を促進するため共通のCore Servicesが定義された。これには特定のプログラミングランタイムの特定のバージョンが含まれている。この共通のセットは異なる進化をしているため、ランタイムはdeprecatedとマークされている。クラウドベンダは競争力を高めるため、追加のランタイムをサポートしている。例えば、AppFogはMongoDB 1.8をサポートし、UhuruはMongoDB 2.0をサポートしている。したがって、UhuruからAppFogへアプリケーションを移行してMongoDBを活用しようとしても、移行に工夫が必要になる。
このような各クラウドプロバイダ毎の差異を覆うため、Cloud Foundry CoreにはリアルタイムでCloud Foundryのエンドポイントに問い合わせを実行するアプリケーションが付いている。この問い合わせの結果、互換性のレポートが得られる。このレポートにはどのサービス/プラットフォームがサポートされているか(いないか)が記述されている。入力欄では上述したベンダのパブリックインスタンスは自動補完で入力できるが、他のCloud Foundryのパブリックインスタンスやアクセス可能なURLがある企業インスタンスでも利用できる。
Cloud Foundry Coreの紹介とともに、Micro Cloud Foundryの新しいバージョンがリリースされた。今回のバージョンはコアの定義と完全に互換性があり、さらにいくつかの独自機能が搭載されている。
- Springバックグラウンドタスクのようなスタンドアロンアプリケーションのサポート
- JRubyアプリケーションのサポート
- Rubyアプリケーション向けの自動再構成
- Java 7のサポート (vert.xが使える)
- Play 2.0 frameworkを利用したScalaでの開発
- node.jsアプリケーションの自動再構成
- Support for Node Package Manager (NPM)
詳細はCloud Foundryのサイトで確認できる。
Kostis Kapelonis 企業向けアプリケーションの分野で働くソフトウエアエンジニア