ApacheまわりのメタクラウドAPI群

メタクラウドAPIとは
様々なクラウドサービスプロバイダが提供するAPIの違いを吸収するライブラリ。たとえば、仮想マシンのON/OFFは、ベンダーが違っても本質的にほぼ同質の振舞いだが、各ベンダー依存のAPIで実現されている。これらを抽象化するのがメタクラウドAPI

# …と、自分は理解しています。

以下は、ユルくwatch継続するための暫定メモです。

ApacheプロジェクトのメタクラウドAPI

プロジェクト ソース 概要 来歴〜現状 最新版
Apache Whirr github Java製。クラウド側のプロビジョニングを隠蔽する。来歴が来歴だけにcassandra、voldemort、zookeeperなどを操作するAPIがあり異色。来歴が来歴だけにコミッタにCloudera社の方が多い。 Hadoopクラスタ管理用のbashPythonスクリプトjcloudsを使ったJava版。2010年5月にIncuvator、2011年8月にTLP v.0.6.0 (2011/08/27)
Apache Libcloud github Pythonライブラリ。Amazon EC2・S3、Rackspace CloudServers・CloudFilesに対応。ロードバランサやDNSコンフィギュレーションできる。 Cloudkick→Rackspace Hosting(買収)。2009年11月にIncuvator、2011年5月にTLP v.0.6.1 (2011/11/09)
Apache Deltacloud github RESTベースのAPIRubyクライアントと、LibdeltacloudというCとC++のライブラリがある。Amazon EC2・S3、EucalyptusIBM SBC、GoGrid、OpenNebula、RHEV-M、vSphere、Rackspace、Microsoft Azure等に対応。 Red Hat2009年9月に発表。2009年11月にIncubator。 v.0.4.1 (2011/10/04)
Apache Nuvem github SCA(Service Component Architecture)準拠が売りだった。 Apache Tuscanyのsandboxとして開発。2010年6月にInuvator。 開発停止?

番外: jclouds

Whirrで使われているjclouds(http://www.jclouds.org/)は、githubで300アカウント以上にwatchされており、人気のようです。(まあ、上の表の他のプロジェクトは、githubApacheリポジトリのミラーとして使っているだけだから、watch数が少ないのかも。jcloudsのみメインリポジトリgithubです。)

人気の理由は、推測ですが、

  • 仮想マシン操作用のAPI群(Compute API)とKVS操作用のAPI群(Blobstore API)の二本立てで、分かりやすい
  • 対応しているクラウドが多い(EC2、GAE、Azure、VMware vCloudに対応している)
  • JavaClojure製なので、(後者はともかく前者は)開発者が多い
    • といいつつ、Blobstore APIでは、クライアント側でJavaを使わない方法も取れる

などなどでしょうか。

ライセンスはApache2.0だし、ドキュメントもそこそこまともにあるし、ユーザグループも活発だし、いまメタクラウドAPIを試すならこれがいいかも。。。と感じました。どうでしょうね。

以下、与太

ここ数年、メタクラウドAPIは林立しています。もちろん、完全に同一のものが乱立しているわけではありません。それぞれカバーする範囲が違います。

たとえば、LibcloudやDeltacloudは、プラットフォームのコンフィギュレーションを行うので、低レイヤー用のAPIです。一方、Nuvemは、比較的アプリケーション寄りのAPIです。Whirrも、プロビジョニングの詳細をユーザから隠蔽するという思想で作られているので、Nuvemと近いレイヤーです。

また、複数の開発元が作っていた同じようなAPIが、それぞれApacheに寄贈された結果、まるで乱立しているように見えているという面もあるでしょう。

しかし、各メタクラウドAPIが目指すところは最終的に概ね近いので、少々まぎらわしいです。一言でいうとクラウドベンダーニュートラ。…というか、このくらいの抽象度でしかゴールが定義されていないから、どれも普及しないのかもしれませんね。実はそもそも標準化の必要性がないんじゃないかという意見もありました。

というわけでユルくwatchするためのメモでした。