概要
API 管理とは、エンタープライズやクラウドに対してアプリケーションおよびデータを接続するAPI を配布、制御、分析するプロセスを指します。API 管理の目標は、API を作成または他社の API を使用する組織が、アクティビティを監視し、API を使用する開発者およびアプリケーションのニーズを満たせるようにすることです。
組織は、変化の激しい顧客からの要求に対応できるよう、API を管理する戦略を実施しています。多くの場合、これらの組織はマイクロサービス・アーキテクチャを導入して、ソフトウェア開発の速度を上げて需要に対応しています。HTTP ベースの API はマイクロサービス・アーキテクチャの中で同期したインタラクションを行うために推奨される手法になりました。このような API は、すべてのマイクロサービスをつなげる接着剤の役割を果たします。このような API を管理すると、API を企業ポリシーに準拠させることができ、一部のサービスは他のサービスとは異なるセキュリティポリシーが必要となるため、適切なセキュリティレベルで統制できます。
API 管理の機能
API 管理の役割は主に、分析、アクセス制御、収益化、開発者ワークフローなど、API プログラムの制御を集中管理することです。Red Hat 3scale API Management などの API 管理ソリューションは、信頼性、柔軟性、品質、速度を改善します。このような目標を達成し、パブリック API と内部 API の両方を安全に使用できるようにするには、API 管理ソリューションは少なくともアクセス制御、レート制限、使用方法のポリシーを提供する必要があります。多くの API 管理ソリューションには、以下のような機能も搭載されているのが一般的です。
- 開発者ポータル:開発者ポータルは、API 管理にとって一般的なベストプラクティスです。開発者ポータルでは通常、API のマニュアルや、サインアップおよびアカウント管理など、開発者の登録プロセスが提供されます。
- API ゲートウェイ:API ゲートウェイは、すべてのクライアントにとってただ 1 つの入口となります。ゲートウェイは、ポリシーの使用を通じてクライアントが API とどのように連携するかも決定します。
- API ライフサイクル管理:API は、設計から実装を経て廃止されるまで、管理できなければなりません。Red Hat 3scale API Management は API ライフサイクル管理の分野でリーダーです。
- 分析:API に何が起きているか、すなわちどのユーザーまたはアプリケーションがどの API をどの程度の頻度で呼び出しているか、把握することが重要です。エラーが起きた API の数やその理由を知ることも重要です。
- API 収益化のサポート:従量制契約によって、API を支えるマイクロサービスへのアクセスを収益化します。API 管理によって、API 呼び出し数などのメトリクスに応じた従量制契約を定義できるようになります。アクセス層に応じてユーザーを分類して差別化でき、セグメント別のサービス品質を提供できます。
これらの機能は API の設計時点で考慮され、API はトラフィック管理、セキュリティ、およびアクセスポリシー適用機能を提供するセルフマネージドまたはクラウドコンポーネントを使用できます。うまく設計された API は、パフォーマンス、顧客管理、さらに将来の成長を考慮に入れて構築されたインフラストラクチャ・プラットフォーム上で、共有、セキュリティ保護、配布、制御、および収益化することができます。
API 管理とマイクロサービス
マイクロサービスと API は、新しいビジネスニーズに対処するため、急速に開発が進む画期的なアプリケーション・コンポーネントの基盤です。このアプローチはクラウドネイティブ・アプリケーション開発と呼ばれています。このアプローチにも課題がないわけではありません。
マイクロサービスを形成するうえでの主な技術上の課題は、大規模なシステムをより小さなコンポーネントに分解することです。前述したように、API はこのような小型化したコンポーネントをデータソースとつなげたり相互に接続させたりすることができます。
マイクロサービス・アーキテクチャが持つもう 1 つの課題は、頻繁に変化する多数のマイクロサービスをどのように連携させるかということです。これを容易にするのが、サービス・ディスカバリーです。API 管理によって、使用できるマイクロサービスを検出するために必要なディスカバリー・メカニズムが実現し、使用方法を記述したマニュアルが開発ポータルから共有されます。
マイクロサービスにはセキュリティに対する統合アプローチが必要です。セキュリティのメカニズムは API の種類によって異なります。外部に公開されたサービスには、内部サービスとは異なるセキュリティメカニズムが必要です。それほどミッションクリティカルではない API なら、一般には API キーによるシンプルな保護で十分です。外部 API やクリティカルな API の場合、OAuth などのセキュリティ強度が高いアプローチが必要になります。
マイクロサービス向け API を設計する準備
以下の重要な質問を考えてみましょう。
- API へのアクセスをどのように制御するか
- メトリクスをどのように取得し、アラートをどのように処理するか
- 使用量の急増をどのように管理するか
- API のアップタイムは誰が責任を持つのか
- API が不適切に使用された場合はどうするか
API 管理作業の成功率をどのように測定するか
作業の効果を測定しなければ、成功したかどうかを評価することはできません。分析によって API に関するアクティビティのデータが得られますが、成功の定義を決めておかなければなりません。組織での成功を定義するには、API の 5 つの主要なパフォーマンス目的を検討してください。
- 信頼性:信頼性とは、開発者への API の可用性です。信頼性を測定するために便利なメトリクスはダウンタイムです。API がいつも使える状態にあるかを測定します。別のメトリクスはクォータで、特定のタイムフレーム内に開発者が API 呼び出しを何回実行できるかを定義します。クォータによって API の乱用が防止され、管理作業が予測しやすくなります。一部の API プロバイダーのビジネスモデルと料金プランはクォータに基づいています。
- 柔軟性:柔軟性は、API を導入するときに開発者が選択できるオプションの多さを指します。API の柔軟性が高いほど、組織が API を管理する作業量 (そしてコスト) が増加します。
- 品質:品質は、API の動作が一貫して開発者の期待に沿っていることです。開発者の API に対する満足度を測定する手段になります。
- 速度:速度はアクセスレイテンシーとスループットで測定でき、スロットリングやキャッシングなどの技法によって影響を受けます。
- コスト:コスト測定の目標は、投資から最大の価値を開発者に提供することです。他の 4 つのすべての目的も、結局はコストの目的に役立ちます。