クラウド同上

Cloud Endpointsの全体像をさらっと理解する

Author
Arima
Lv:2 Exp:681

2020年4月に新卒で入社しました。肉が好きです。

Cloud Endpointsは、APIを開発・管理するためのとても便利なサービスです。しかし、初めてCloud Endpointsを勉強する人は少しとっつきにくいなと思うかもしれません。(僕がそうでした)そんな方がこの記事を読むことでさらっと全体像がイメージでき、今後Cloud Endpointsを学習するにあたって、より効率よく学習できるようになれることを願って本記事を執筆しました。公式のドキュメントを読んでもよくわからない!という方がこの記事を見て理解できるようになっていただければとても嬉しいです。

本記事の対象

本記事は以下のような読者を想定して書かれています。

  • Cloud Endpointsの全体像をとりあえず理解したい人。
  • 公式ドキュメントではよくわからない人。
  • Cloud Endpointsをこれから学習して使ってみたいけど、何から勉 強すればいいのかわからない人。

Cloud Endpointsって何?

Cloud Endpoints(以下、Endpoints)は、Googleが実際に使用しているAPI管理ツール(出典)です。Endpointsが提供する機能は以下のとおりです。

  • APIの保護:JWT(JSON Web Token)とAPIキーを使用してAPIに アクセスできるユーザーを制御します。
  • APIのモニタリング・ロギング:APIの指標を収集し、Google Cloud Console上で可視化、分析できます。
  • 低レイテンシ・高パフォーマンス:トラフィックに応じてスケールすることで、APIに対する同時リクエストを確実に処理できます。
  • リクエストのルーティング:受信したリクエストのパスを定義ファイルと 照合し、一致するパスが見つかると指定された認証手順を実施し、認証が通るとリクエストを通します。

Endpointsが動作する環境

Endpointsは通信されるプロトコルとEndpointsをホストするコンピューティング環境によって三つのオプションがあります。下の図はそれぞれのオプションがどのコンピューティング環境をサポートしているかを表しています。

以下にそれぞれのオプションについて簡単に記載しておきます。

Endpoints for OpenAPI

Endpoints for OpenAPIでは、OpenAPIのVer2.0で記述されたAPIをEndpointsで管理でき 、また最も多くのコンピューティング環境で動作することができます。コンピューティング環境とは、Endpointsが動作する環境のことです。OpenAPIとは、REST APIを記述するための仕様で、yaml や jsonを用いて記述します。OpenAPIの詳細な説明に関しては本記事では言及しないので、詳細を知りたい方はこちらをご覧ください。

Endpoints for gRPC

Endpoints for gPRCでは、gRPCサービスにEndpointsの管理機能を追加できます。gRPCは、Googleの開発したRPC(Remote Procedure Call)で、言語やプラットフォームに依存することなく、サーバー上で実装されている関数をクライアントから呼び出すことができます。gPRCの詳細な説明に関しては本記事では言及しないので、詳細を知りたい方はこちらをご覧ください。

Endpoints Frameworks

Endpoints Frameworkは、App Engine スタンダード環境のpython 2.7とJava8ランタイムのみに対応しているフレームワークです。本記事では、Endpoints Frameworksの内容に関しては言及しないので、詳細を知りたい方はこちらをご覧ください。

Endpointsの料金体系

Endpointsの料金は1ヶ月あたりのAPI呼び出し回数によって変わります。Google Cloudには、料金計算ツールが用意されているので、是非使ってみてください。

Endpointsのアーキテクチャー

ここまでの内容で、Endpointsがどういう機能を提供してくれるのかがお分りいただけたと思います。ですが、どのようにして機能を実現しているのかが理解できないと、全体像のイメージは湧かないですよね。ここでは、Endpointsがそれぞれの機能をどうやって実現しているのかをアーキテクチャーの図を用いて説明します。

注)このアーキテクチャは、Endpoints for OpenAPIとEndpoints for gRPCのものです。Endpoints frameworks ではESPは使用されませんが、代わりにAPIゲートウェイが組み込まれ、ESPと同等の機能を提供しています。

Extensible Service Proxy Container (ESP Container)

ESPはNGINXベースのプロキシで、APIバックエンドの各インスタンスと一緒にコンテナにデプロイされます。APIに対するリクエストは、ESPが先に受け取り、ユーザーの検証やリクエストの制御、指標の収集などのために、リクエストをGoogle Service Controlに送信します。

注)ESPには現在v1とv2がありますが、本記事ではv1ベースで書かれています。ESPのv2を知りたい方はこちらをご覧ください。

Google Service Management

OpenAPI仕様の定義ファイルを用いてAPIの管理ルールを構成します。gcloudコマンドを使用してOpenAPI仕様の定義ファイルをService ManagementにデプロイすることでAPIの管理ルールが適用されます。

Google Service Control

ESPから受け取ったリクエストを検証し、APIの使用を許可するかどうかを判定します。また、ロギングやモニタリングのためにGoogle Cloud Consoleに指標を送信します。

LB(Load Balancer)

ロードバランサはトラフィックを複数のインスタンスに分散させることができます。この機能により、APIへのリクエストを分散させ、APIへの同時リクエストを確実に捌けるようになります。 (APIへのリクエストはESPが先に受け取るので、ロードバランサはESPへのリクエストを分散Google
Cloud Consoleは、Google Cloudのあらゆるサービスを管理できるGUIツールです。Console上で、APIのログの確認や指標のモニタリングをすることができます。

Endpointsのイメージを膨らませよう!

文字ばかりの説明じゃイメージできないよ!という方に向けて、それぞれの機能について図を用いて説明します。

EndpointsによるAPI保護のイメージ図

(処理の流れ)
①APIに対するリクエストは先にESPが受け取ります。
②リクエストを受け取ったESPはGoogle Service Control APIを呼び出して、検証します。
③検証に成功すれば、バックエンドにリクエストが転送されます。失敗すれば、リクエストは拒否され、Service Control APIによってログが記録されます。

Endpointsによるリクエストルーティングのイメージ図

リクエストを受け取ったESPは定義ファイルによって指定された認証を行いますが、実際はパスを認識して、パスごとに指定された処理を行います。

(処理の流れ)
①リクエストを受け取ったESPは、リクエスト先のパスを認識する。
②パスごとに定義されている処理を行い、バックエンドにルーティングします。

まとめ

ここまで読んでくださってありがとうございました。Cloud Endpoints がどういうものなのかイメージが沸きましたでしょうか。APIを開発・管理する際にとても便利なサービスなので、是非使ってみてください。より詳細にイメージしたい方は、個人的にはOpenAPIの定義ファイルの書き方を学習するのが一番の近道だと思います。今回は、実装方法までお話ししていませんが、実装手順についてのapps-gcpの記事を載せておきますので、ご興味ある方はご一読ください。では、また会いましょう!

認証機能付きAPIが簡単に作れるCloud Endpoints入門
認証機能付きAPIが簡単に作れるCloud Endpoints 入門2 JWTトークン認証
認証機能付きAPIが簡単に作れるCloud Endpoints入門3 Google App Engine