Apigee EdgeがNode.jsをサポートし、API管理モジュールを含むプロジェクト、Volosをオープンソース化した。
Apigeeは最近、新規API、モバイルアプリケーション向けバックエンド、マッシュアップ、複合サービスの構築に使うことができるNode.jsとNPMモジュールのサポートを追加した。私たちはApigeeのチーフアーキテクトであるGreg Brail氏にインタビューし、開発者はNode.jsを使って、Apigeeプラットフォームで何ができるのか話を聞いた。
InfoQ: Edgeプラットフォームに対してプログラミングするとき、JavaScript/Node.jsを使って何ができるのですか?
GB: 具体的に言うと、あなたはすぐにでも、Node.jsでWebアプリを書いて(標準の "http" と "https" モジュールを使って)、それをクラウドもしくは自分のデータセンタにあるApigee Edgeにデプロイできます。デプロイするアプリはNode.jsのフル環境にアクセスできます。NPMにホストされた大量のモジュールを使うこともできます。(私たちの環境はまだ互換性の欠けているところがあります。たとえば、CやC++ネイティブコードに依存するモジュールをサポートしていません)
既存のAPIプロキシと同様、スクリプトはEdge内で実行されるので、Edgeの各種デプロイメント機能をサポートしています。同じUIやAPIから異なる仮想環境に異なるバージョンをデプロイする機能や、地理的に複数のリージョンに自動的にデプロイする機能も含まれます。私たちはEdge経由でNode.jsプログラムに渡されるすべてのAPI呼び出しの分析結果を収集しており、トラフィック分析やカスタムデータによるカスタム分析も可能です。
さらには、Node.jsスクリプトを既存のポリシーライブラリと組合わせることもできます。たとえば、セキュリティポリシー(OAuthなど)、トラフィック管理(クォータやスパイク停止など)、セキュリティ脅威検出などです。
InfoQ: Objective-C、Java、.NET、Ruby、JavaScriptなど、たくさんのSDKもサポートしていますね。これらは、EdgeプラットフォームにNode.jsを使ってやれることと同じことをするのに使えるのですか? 何か違いはあるのでしょうか?
GB: Edgeプラットフォームには、独自の設定スキーマを使って定義されたAPIプロキシを実行できるランタイムが含まれていますが、そこにNode.jsを使って構築されたHTTPサーバを実行できるランタイムが含まれたということです。一方、SDKというのは、顧客が直接使えるようにEdgeが提供している各種APIのためのクライアントです。たとえば、SDKを使うことで、各種モバイルプラットフォーム向けアプリや、データストレージやプッシュ通知のようなバックエンドとしてEdgeを使うものが作れます。
これに対して、Edgeはサーバです。Node.js機能というのは、コードをサーバにデプロイする新しい手段です。サーバには最近のアプリにとって重要な機能を提供するために用意されたAPI一式も含まれます。SDKというのは、そうしたAPIにクライアントが簡単にアクセスするための手段なのです。
また、ApigeeはVolosをオープンソース化した。これはNode.jsモジュール一式で、API OAuth 2.0認証、鍵の検証、クォータ管理、キャッシングをサポートする。Volosは独立して実行することもできるし、Apigee Edgeとやりとりするようセットアップして、開発者、アプリ、APIの管理サポートを得ることもできる。また、VolosアプリをApigeeプラットフォームに直接デプロイすることもできる。
VolosとEdgeについて、Brail氏はこう語った。
Volosが作られた理由の1つは、数々のEdgeの機能を活用することです。たとえば、VolosのOAuthとクォータモジュールはRedisデータベースに対してローカルに実行することもできますし、Edgeとやりとりすることもできます。そうすることでOAuth機能を使うということです。もちろん、VolosアプリをデプロイしてEdgeで動かせば、そうした機能を直接使うことができます。必ずしも二者択一ではないのです。
そうは言っても、Edgeは最新の管理機能をいろいろ備えています。開発者、アプリ、それらの集合の管理から、分散クォータやディープアナリティックスなど手の込んだものまで。
Volosの今後について、Brail氏はApigeeのプランをこう付け加えた。
私たちはVolosにさらなるモジュールを追加して、Node.jsにおけるプロダクション品質のAPI構築のための最高のツールセットにするつもりです。そして、もちろん、Edgeがそうしたアプリを動かすための最適な場になるよう、Edgeで実行するとEdgeプロダクトの全機能と有用性を活用できるようにしていきます。
いろいろある中、Apigeeは新規あるいは既存のバックエンドやデータサービスと、クライアントとの間に介在するAPIの構築と管理をサポートしている。