ApacheまわりのメタクラウドAPI群
- メタクラウドAPIとは
- 様々なクラウドサービスプロバイダが提供するAPIの違いを吸収するライブラリ。たとえば、仮想マシンのON/OFFは、ベンダーが違っても本質的にほぼ同質の振舞いだが、各ベンダー依存のAPIで実現されている。これらを抽象化するのがメタクラウドAPI。
# …と、自分は理解しています。
以下は、ユルくwatch継続するための暫定メモです。
ApacheプロジェクトのメタクラウドAPI群
プロジェクト | ソース | 概要 | 来歴〜現状 | 最新版 |
---|---|---|---|---|
Apache Whirr | github | Java製。クラウド側のプロビジョニングを隠蔽する。来歴が来歴だけにcassandra、voldemort、zookeeperなどを操作するAPIがあり異色。来歴が来歴だけにコミッタにCloudera社の方が多い。 | Hadoopクラスタ管理用のbash→Pythonスクリプト→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ベースのAPI。Rubyクライアントと、LibdeltacloudというCとC++のライブラリがある。Amazon EC2・S3、Eucalyptus、IBM SBC、GoGrid、OpenNebula、RHEV-M、vSphere、Rackspace、Microsoft Azure等に対応。 | Red Hatが2009年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されており、人気のようです。(まあ、上の表の他のプロジェクトは、githubをApacheリポジトリのミラーとして使っているだけだから、watch数が少ないのかも。jcloudsのみメインリポジトリがgithubです。)
人気の理由は、推測ですが、
- 仮想マシン操作用のAPI群(Compute API)とKVS操作用のAPI群(Blobstore API)の二本立てで、分かりやすい
- 対応しているクラウドが多い(EC2、GAE、Azure、VMware vCloudに対応している)
- Java+Clojure製なので、(後者はともかく前者は)開発者が多い
などなどでしょうか。
ライセンスはApache2.0だし、ドキュメントもそこそこまともにあるし、ユーザグループも活発だし、いまメタクラウドAPIを試すならこれがいいかも。。。と感じました。どうでしょうね。
以下、与太
ここ数年、メタクラウドAPIは林立しています。もちろん、完全に同一のものが乱立しているわけではありません。それぞれカバーする範囲が違います。
たとえば、LibcloudやDeltacloudは、プラットフォームのコンフィギュレーションを行うので、低レイヤー用のAPIです。一方、Nuvemは、比較的アプリケーション寄りのAPIです。Whirrも、プロビジョニングの詳細をユーザから隠蔽するという思想で作られているので、Nuvemと近いレイヤーです。
また、複数の開発元が作っていた同じようなAPIが、それぞれApacheに寄贈された結果、まるで乱立しているように見えているという面もあるでしょう。
しかし、各メタクラウドAPIが目指すところは最終的に概ね近いので、少々まぎらわしいです。一言でいうとクラウドベンダーニュートラル。…というか、このくらいの抽象度でしかゴールが定義されていないから、どれも普及しないのかもしれませんね。実はそもそも標準化の必要性がないんじゃないかという意見もありました。
というわけでユルくwatchするためのメモでした。