Mulesoftはクラウドとオンプレミスのサービスを開発、配置、統合を行うAnypoint Platformを発表した。InfoQはMule Summitツアーの間、MulesoftのCTOであるRoss Mason氏この新しいプラットフォームについて話を聞いた。氏はオープンソースのMuleプロジェクトの創始者だ。
InfoQ: MulesoftはサービスとAPIマネジメントに関連する新しい製品をいくつか発表しました。Service Registry (GA)、APIKit (現在はベータ版)、API Manager(ベータ版)です。これらの製品について教えてください。
RM:APIkitはAPIのベストプラクティスに従うAPIを実装するための設計ツールです。オープンソースで宣言的なモデルを使ってREST APIとよいAPIの設計を強制するフレームワーク、例えば、一貫性のあるURIスキーマやバージョニング、セキュリティを開発できます。コーディングの速度を上げ、テストを効率的にできるようにし、APIをドキュメント化します。APIkitはAPIファーストの開発アプローチを約束します。インターフェースの定義と実装を分離し、簡単に組み立てられるようにして、モックを実装して、バックエンドのコードを徐々に実装することができます。このような方法を採用することでAPIそのものをバックエンドと独立してテストすることができます。
興味深いことに、私たちはAnypoint Service Registry APIを構築するのにAPIkitを使いました。というのは、動作するUIを作る数ヶ月前に機能のデモ用のAPIがあったからです。
Anypoint Service RegistryはNew Enterprise向けに作られた初めてのSOAガバナンスプラットフォームです。ハイブリッドな環境をサポートするよう設計されており、REST、SOAP、レガシ資産などどのようなサービスでも制御できます。内部のサービスか外部のサービスか、ファイアフォールの外か内かクラウド上か単一のプラットドーム上かを問いません。Anypoint Service Registryはサービスのカタログ化と発見を容易にし、そのライフサイクルに渡って管理し、利用状況を分析し、ポリシーと規約を強制します。
Anypoint API ManagerはAPIを素早く配置し、スケールできるようにします。Anypoint API Gatewayを使ってクラウドベースのAPIを管理します。対象のAPIがCloudHub上にあるか、プライベートなデータセンター上にあるかは問いません。開発者のAPI利用を推進するため、APIhubを使ってカスタマイズした開発者ポータルを作成できます。APIhubは世界最大のAPIディレクトリ、パブリッシングプラットフォームです。
InfoQ: Anypoint Platformには上述のような新しい製品もMule ESB、Cloudhub、API Connectorsのような既存の製品も含まれています。Anypoint Platformのブランドはオンプレミスとクラウドの境界を表しているのでしょうか。それとも境界はなく、地続きなのでしょうか。
RM: このプラットフォームはレガシシステムやパッケージアプリ、SaaSアプリケーション、モバイルデバイスとAPIを接続します。オンプレミスとクラウドを繋ぐプラットフォームなのです。統合はオンプレミスでMule ESBを使って行われる場合も、クラウド上のCloudHubで行われる場合でも、そのハイブリッド版のシナリオでも問題ありません。古いものと新しいものを繋ぐ統合シナリオに利用できます。使いたい部分を使うことができます。私たちの顧客には完全にオンプレミスでの統合をしている企業もありますし、オンプレミスとクラウドの両方を使っている企業、クラウドだけを使っている企業もあります。ほかのプラットフォームとの大きな違いは、Anypoint Platformを使うことで開発者はどこでアプリケーションを統合するかを選ぶことができ、単一のプラットフォームでハイブリッドなアーキテクチャを実現することができます。
InfoQ: 過去、SOAPだけをサポートしたUDDIベースのサービスレジストリがありました。また、新しい世代のAPIマネージャのほとんどはRESTとJSONベースのサービスです。サービスレジストリに最適なサービスのあり方はこの両極端の間のどこにあるのでしょうか。
RM: UDDIはSOAPに特化していましたが、最大の問題はほとんどの人にとって使えなかったということです。私たちはAnypoint Service Registry (ASR)では他のレジストリ製品とは全く異なる方法を採用しました。ASRはユーザビリティと利用しやすさに特化した設計になっています。ASRは稼働中のエンドポイントにメタデータとアーティファクトを付加する機能に注力したランタイムです。稼働中のエンドポイントの管理は実行時にエンドポイントに振る舞いが付与されることで実現されます。これらの振る舞いはポリシーと呼ばれ、セキュリティ(認証と認可)、SLA、変換や仮想化などのすべてのエンドポイントリクエストを制御します。また、クラウドベースのプラットフォームで企業がどのようなサービスでも、オンプレミス、クラウドを問わず管理できるのも独自の特徴です。どのような企業でも古いサービスや新しいサービスを組み合わせています。私たちはそのような環境を尊重し、そのような環境で動作するソリューションを提供します。
InfoQ: Service RegistryはSaaSとして提供されます。どのようにオンプレミスのサービスにポリシーを提供したり、分析をしたりするのですか。Anypointの内部を少し詳しく教えてください。エージェントやプロキシを利用するのですか。
RM: Anypoint Service Registryは管理機能とリポジトリを搭載した安全なマルチテナントクラウドとして提供される、ハイブリッドのアーキテクチャでできています。各顧客は独立したスキーマ内にメタデータとポリシーを保持します。ランタイムルックアップやポリシーと規約の強制、メトリクスの収集と実行はエージェントを利用してオンプレミスで実行されます。ポリシーやトラッキングや処理の適用はオンプレミスのMuleサーバのエージェントかCloudHub上のエージェントと通信するワーカーによって行われます。このハイブリッドなエージェントアプローチは他の方法よりも優れたスケーラビリティとパフォーマンスを発揮します。呼び出しが中心のプロキシを経由しないからです。エージェントはキャッシュレイヤを提供し、遅延を改善してオフラインでも安全に働く仕組みを提供します。
InfoQ: サービスの仮想化はどのように実現していますか。
RM: エンドポイントのURLをアプリケーションにハードコーディングするのではなく、実行時にメタデータを元にロケーションを取得するため、レジストリを問い合わせます。この情報はキャッシュされ、Anypoint Service Registryが変更されると新しいポリシーが適用されます。キャッシュとプッシュ通知を使うことで必要の無いネットワーク通信が発生していないことを保証します。
InfoQ: APIKitにはSwaggerが含まれています。APIKitを使う場合、Swaggerはどのように役に立ちますか。
RM: Swaggerはサービス言語にとらわれない仕様でありフレームワークで、RESTful APIを記述することを主要な使途としています。APIのドキュメントとクライアントライブラリを作成するのに利用できます。Swaggerが使えるAPIはAPIについてのインタラクティブなドキュメントを生成することができ、ユーザは実際に試してみることでAPIを探し、リクエストとレスポンス、ヘッダとリターンコードを確認することができます。これはかなり強力ですが、さらにSwaggerはクライアントコードの生成を支援します。JavaScript, Python, Ruby, Java, Scalaなど人気の言語をサポートしています。
InfoQ: RESTサービス用のAPIの規約は常に議論を呼ぶ話題です。WADLや規約を全く使わない方法などを巡る議論にSwaggerは終止符を打つのでしょうか。
RM: Swaggerは優れた仕様を持っていると思います。正しい方向に向かっていますし、積極的なチームとコミュニティを持ち、ベンダによって推進されているのではありません。私たちはSwaggerをAPIkitとAPIhubの両方で利用しています。すべての仕様に賛否があると思いますが、私たちはSwaggerは優れた進化をしており、十分な価値を提供していると思います。MuleチームはSwaggerのチームと共に働き、APIの定義に関連する共通の要求を満たすために仕様の荒削りな部分に対処しました。
私たちはWADLを検討し、規約を使わない方法も過去に実践しました。しかし、現在大量のAPIが存在し、より構造化された摩擦の少ない手法が必要とされています。APIkitを使えばRESTfulの規約に従うAPIを設計し、バージョニングやURLの形成、セキュリティ、Swaggerを使った自動生成などを水面下で調整してくれます。'rails'の手法をAPIに持ち込んているのです。
InfoQ: API Managerは今年の後半にリリースされる予定です。どのような新しい機能が追加されていますか。API ManagerとService Registryは相補的な関係なのでしょうか。それとも全く別の要求を満たすものですか。
RM: Anypoint Service RegistryとAnypoint API Managerには共通点はありますが、APIの管理は外部のAPIに注力しています。つまり、完全に公開するAPIや、パートナーコミュニティに公開するAPI、外部から利用されることを想定したAPIなどです。外部公開されるAPIは開発者ポータルでユーザが発見し、テストし、利用できるようにします。Anypoint API Managerは、APIhubを使って、このような公開された、あるいは、非公開の開発者ポータルを作成する機能があります。
API ManagerはService Registry上に構築され、Service Registryと同じようにガバナンス、仮想化、ポリシーの強制ができます。企業がすべてのAPIを外向きのAPIとして作成したいと考える傾向が強まっています。これは、開発者が利用者の視点からAPIを作成するようになるので、良い影響を与えます。APIkitとAnypoint API ManagerはAPIがどのようにあるべきかについての青写真を提供すると信じています。