Mashape
layer 7
Apigee

API管理の5大原則–Twitterはどこがまずいのか

次の記事

MIT開発の「特殊相対性理論3Dゲーム」で、時空間の歪みを勉強してみよう!

organismapi
 
APIは、アプリケーションとアプリケーションをくっつける糊だ。消費者向けだけでなく、企業向けのアプリケーションでもそうだ。とりわけ企業では、アプリケーションの多様化とともにAPI管理が重要な課題になっている。

APIの重要性が増すとともに、その作成と開発と管理のニーズも重要になっている。主なAPI管理サービスはどこも、顧客と協働するときの基本戦略を定め、それらを指針として仕事を進めている。

MasheryのCEO Oren MichelsがAPI管理の概要をぼくに教えてくれたが、それはおそらく、ApigeeLayer 7MashapeSOA Softwareなど、そのほかのAPI管理サービスプロバイダにも共通している原則だと思う。

以下、彼らの話を5つのルールにまとめてみたが、これらがAPI管理のすべてを言い表しているわけではない。しかし、現在の市場の基本的な動向を理解するためには、十分役に立つだろう。

1. 設計(技術者より業務部門重視)

多様なデベロッパやパートナーから利用しやすいAPIを作ること。APIの利用に関し、セキュリティのポリシーと利用のポリシーを作り、データやサービスへのアクセスを利用者のタイプにより適切に制限する(彼らがアクセスしてよいサービスやデータの範囲や種類を定める)こと。Layer 7やSOA Softwareは、企業内の職掌の違いに応じて対応を変えるべきだ、と言っている。

Layer 7の協同ファウンダで戦略部長のDimitri Sirotaは、こう言う:

企業内でAPIの構築や運用に携わっている職掌や組織ごとに、API管理に求めるニーズが異なる。違いがはっきりしているグループ分けは、1)APIのアーキテクトやデベロッパ、2)セキュリティのアーキテクト、3)ITのオペレーション、4)そしてビジネスアナリスト(APIのマーケター)だ。Layer 7には、利害関心が微妙に異なるこれらのグループに、それぞれ対応する製品部位がある(APIゲートウェイ、APIアイデンティティブローカ、APIサービスマネージャ、APIデベロッパポータルなど)。

ユーザニーズの多様性に応じて多様なプロダクトを提供するAPI管理サービスは、一種のプラットホームなので、拡張性が重要だ。つまり既存のサービス体系をもとに、新たなニーズにもすぐ対応できること。とくに、管理サービスのAPIとSDKの両方を提供することが必要だ。うちは、そうしている。

Michelsの指摘によると、サービスの提供対象はIT部門の人間というよりもむしろ、ITとそのほかの業務組織との生きた関係だ:

企業のAPI管理はIT部門の技術者だけが対象ではなく、その企業全体だ。SOA Software〔後述〕のソリューションやそのほかのゲートウェイは、ITの連中だけを対象とし、そのAPIによって実際に仕事をしている側を忘れている。とくにそれが顕著なのは、無料で提供しているUIや、さまざまな“ポリシー”に関する文書だ。それらは、専門の技術者でないと理解できないほど、複雑難解なものが多い。

このことは、きわめて重要だ。うちは企業向けのAPI管理サービス事業をすでに5年やっているが、技術者と、そのAPIに実際の利害関係を持つ業務部門の人たちとが、緊密に連携していない状況は一度も見たことがない。むしろ後者の人たちのほうが、API管理プラットホームに求めるものが大きいと言える。

2. 平易なドキュメンテーション

APIを利用しやすいものにするために、そのAPIを使ったアプリケーションの作り方や管理の仕方を分かりやすく説明したドキュメンテーションやコミュニケーションツールを提供すること。Twitterは、若い企業のわりには、この点が充実しているが、APIの利用をめぐるデベロッパとの日常的なコミュニケーションはあまり良くない。

API エヴァンジェリストのKin Laneはこう言う:

コミュニケーション、コミュニケーション、コミュニケーション。何よりもコミュニケーションが重要だ。Twitterのつまずきは、2010年の3月から始まった。その後の各リリースでも、それは続いている。Twitterは、デベロッパのエコシステムに対して話しかけるだけで、コミュニケーションをしない。今はソーシャルメディアの時代なのだから、情報の一方的なブロードキャストではなく、会話が必要なのに。

APIのロードマップを決めるときには、デベロッパの意見や要望につねに配慮すること。製品開発に消費者の参加が重要であるように、APIもその消費者(=デベロッパ)の参加が設計と開発過程に欠かせない。彼らが言うことをすべて取り入れる必要はないが、彼らの参加意識を維持することは重要だ。それをしないと、彼らはそっぽを向くだろう。Twitterは、DickがCEOになる前までは良かったけどね。

APIのユーザであるデベロッパから利益をもらっていながら、そのコミュニティにお返しをしないのはまずいよ。

3. 利用分析でユーザ還元

Michelsの説では、APIの利用に関するデータをなるべく多く収集して、それらを分析することが重要だ。それにより、今後のサポート方針や、より効果的な使い方のガイド、あるいは逆に、ユーザの業務や技術目標にとって良くない使い方の指摘、などが、API管理サービスの一環としてできるようになる。

データ収集と分析にとくに熱心なApigeeは最近、ソフトウェア定義ネットワーク(software-defined networks, SDN)のAPIの構築でもその流儀を見せた。以下は、この秋ぼくがApigeeについて書いた記事からの引用だ:

ApigeeのマルチベンダSDNのためのAPIプラットホームはスタンドアロンのソフトウェアで、ネットワーク管理システムを複数のベンダのSDNコントローラと統合できる。その離れ業を、リアルタイムのAPI変換によって行っている。そのソフトウェアはネットワークを分析して各コントローラ上の動的なポリシーを有効にし、また、そのときどきの利用傾向に対応してネットワークの振る舞いを変えるような、ネットワーク対応プログラムも動かす。Apigeeのソフトウェアはネットワークのトラフィックをドメインモデル中へ読み込み、ネットワークトラフィックの分析をAPIとしてパブリッシュする。

Apigeeの戦略担当VP Sam Ramjiの主張によると、分析によって、インフラとさまざまなデータフローとの相性の具合が分かるようになる。それによって、ソフトウェア(SDN)がハードウェア(物理ネットワーク)をどのようにリプレースしているか、という様態が分かり、アプリケーションをデータに合わせて調製修正するやり方も分かるようになる。

ちょっと見方の違うMashapeは、うちはAPIのGoogleだ、と言う。つまり分析がサービスの中心だ。CEOのAugusto Mariettiは曰く:

分析をはじめ、すべての管理サービスは、無料で配る日用品のようなものだ。配布量、ひいては消費量が、多ければ多いほどよい。GoogleがGoogle Analyticsを無料で提供しているのは、それがAdWordsの販売促進になるからだ。うちの場合は、クラウドコンピューティングという分野におけるオブジェクトブローカーだ。APIの世界はジャングルだが、うちはそこに統一をもたらす。うちでは、APIの消費者たち(デベロッパ)が、たった一つのAPIキーと自分のコンソールとクレジットカードで、多様なAPIを使う仕事ができるようになるのだ。

4. プラットホームを特定しない普遍的アクセス

企業顧客は、パブリッククラウドやプライベートクラウド、オンプレミス、それらのハイブリッドなど、いろんなアーキテクチャを使っている。それらに対し、シームレスでシンプルなサポートを提供すること。

5. アップタイムの安定

アップタイムが常時安定し、スケーラビリティに富み、トラフィックスパイクに対応できる冗長性を有すること。企業のバックエンドにおける一時的な不具合を迂回でき、バックエンドの停止の際には、必要最小限の処理は完全に終えてから自らも終了すること(fail gracefully, 優雅なエラー終了)。SOA SoftwareのIan Goldsmithは、今週ぼくが書いた、同社のエンタプライズAPI管理プラットホームに関する記事について、こう言った:

SOA Softwareは企業のアーキテクトとデベロッパのニーズに応える。彼らは何年もかけて大規模なインフラストラクチャを構築し、それらが何百というソフトウェアスタックを動かしている。これらのスタックからのデータに、どうやってアクセスするか。それがチャレンジだ。複数のアプリケーションを統合するためにAPIを使うことが、一般化する前の時代から仕事をしているアーキテクトたちはとても多い。うち(SOA Software)も、その名が示しているように、その時代に生まれた会社だ。そのころは、サービス指向アーキテクチャ(service-oriented architectures)が、複数のオンプレミスのアプリケーションをWeb環境に統合するための、もっともモダンな方法と見られていた。

あなたは、どう考えるか? APIを管理するための重要な原則として、ほかに何があるだろうか?

(画像提供: XPlaneCreative Commonsに基づき。)

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))