API Managementとは

「優れたAPIを開発したので公開したところ、アクセスが集中しパンクした」
「データ参照APIのみ公開したつもりが、認可していない更新APIまで呼び出された」
「複数のAPIを呼び出した結果を束ねて画面を作りたい(マッシュアップ)」

APIを実適用するには、こういった悩みや要望がつきものです。一方で、各APIにこれらの機能をそれぞれ実装した場合、コストがかさむばかりか、統一的な方式で管理するのは困難になってくるでしょう。

監視も含めて複数のAPIを集中的に管理する考え方を「API Management」と呼び、APIを構築するデザインパターンとしては、API Gatewayパターンとも呼ばれます。

API Management有無と非機能実装箇所の違い(第6回の再掲)

「Amazon API Gateway」「IBM API Connect」「Redhat 3scale」「Google Apigee」などAPI Gatewayパターンを実現する製品が出てきています。Redhatが2016年6月22日に3scaleの買収を発表し、Googleが2016年9月9日にApigeeの買収を発表し、最近ではOracleが2017年1月19日にApiaryの買収を発表するなど、クラウドベンダーがAPI Management製品をクラウドの機能スタックに組み入れる動きが加速しています。

不特定多数のアクセスを伴い、セキュリティや性能などの非機能面の担保が難しいAPIエコノミーは、柔軟性が高く非機能面の要件を兼ね備えたクラウドとの相性が良いと言えます。併せて、リアクティブ(次回紹介予定)を意識したシステム構築が求められます。

Apigeeを触ってみる

Google社のApigeeを使って「API Proxy」を作成します。ブラウザから「https://apigee.com/」にアクセスし、「SIGN IN」からログインします。

アカウントの作成方法の詳細については、拙著『Swagger入門 第5回』をご参照ください。

Apigeeトップ画面

ログインすると、管理画面が表示されます。「API Proxies」をクリックします。

Apigee Edge管理画面

「+Proxy」ボタンをクリックし、API Proxyを追加します。

API Proxyの追加

「Reverse proxy」を選択し、「Next」をクリックします。

Reverse proxyの作成

「Existing API」に、連載第6回でPivotal Web ServicesにアップロードしたSpring BootのAPIのURLを指定し、「Next」をクリックします。

bootSampleの指定

今回はセキュリティ設定は指定しないため、「Authorization」に「Pass through (none)」を選択し、「Next」をクリックします。

セキュリティの設定

そのまま「Next」をクリックします。

ホストの設定

デプロイ先としてテスト環境を指定するため、「Deploy Environments」に「test」をチェックし、「Build and Deploy」ボタンをクリックします。

デプロイ環境の設定

デプロイが進行し、以下が表示されれば成功です。「sample1」をクリックすると管理画面へ遷移します。

デプロイ完了

Proxy EndpointsがAPIプロキシのパスなどを示しており、Target EndpointsがAPIプロキシの先のAPIのURLなどを示しています。

API Proxy設定画面

DEVELOPタブを選択するとAPIプロキシの動作を設定可能です。「+Step」をクリックします。

DEVELOP画面

Assign Messageを選択し、「Add」をクリックします。

Assign Messageの追加

SetタグのQueryParamsにてAPIプロキシにて自動で付与するパラメータを設定できます。以下の例では、abcパラメータにdefを設定しています。

abcパラメータの追加

ブラウザからAPIプロキシのURLにアクセスすると、その先のSpring Bootアプリケーションへのアクセス結果が返ってきます。

作成したAPI Proxy経由でのSpring Bootアプリケーションへのアクセス

*  *  *

今回は、Apigeeを使ってAPI Managementを体感いただきました。OAuth2などのセキュリティ面、Prometheusなどの監視面含め、APIを統一的に管理することで、各担当者は個別のAPI構築に注力することが可能になります。

次回は、リアクティブを紹介します。APIエコノミーを構成するシステム全体として具備すべき4つの特徴から、APIを構築するプログラミング手法まで、幅広く紹介します。

著者紹介


正野 勇嗣 (SHONO Yuji ) - NTTデータ シニアスペシャリスト

2011年頃まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。

最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。2児のパパ。