Upgrade to Pro — share decks privately, control downloads, hide ads and more …

API Gateway 概要

API Gateway 概要

oracle4engineer

December 21, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. ビジネスとビジネスを繋ぎ、拡大するAPIエコノミー APIの公開は企業やサービスの価値に直接的に影 響を及ぼすようになっている 金融機関のAPI公開によるFintechの拡大 • FinTech事業者は、家計簿アプリや貯金アプリ など幅広いサービスを提供 倉庫や配送などの物流API公開 • 物流APIを活用し、利用者は常に最新の配送

    状況がわかる 自動車業界にも拡がるAPI • 渋滞情報や走行データのAPI化により、MaaS 事業や自動運転の実現に繋がる 政府保有情報のオープンデータ化 • 各自治体や公共事業者は、政府統計のAPIを 活用してサービスを構築可能 近年ますます広がり続けるAPIの世界 デジタルビジネスを拡大するためには、APIを 活用した事業サイクルは不可欠 ①データの 蓄積 ②APIの開 発と公開 ③APIの収 益化 ④新事業 の構築 Copyright © 2025, Oracle and/or its affiliates. 3
  2. API利用者 バックエンドサービス APIの利用/公開の両方で機能する「玄関」が必要 拡がるAPIに反して、煩雑化するその管理 • 複数の認証方法とアクセスポイン トがある場合、APIを利用する際 の実装や管理が複雑 • 公開するAPIのバックエンドごとに、

    サービスの監視やライフサイクル 管理が発生 • APIを横通ししてセキュリティレベ ルの維持や利用状況の把握・制 御を行うことが困難 Faa S メインフレーム データベース コンテナアプリ ERPアプリ APIの公開 APIの公開 APIの公開 Mobile SaaS Device 開発者 Copyright © 2025, Oracle and/or its affiliates. 4
  3. バックエンドサービス API利用者 プラットフォームを利用することによる、API管理の一元化 API管理プラットフォームがもたらす、管理のシンプル化 Faa S メインフレーム データベース コンテナアプリ ERPアプリ

    Mobile SaaS Device 開発者 API管理プラットフォーム 認証方法やアクセスポイントが統一さ れており、APIを利用する側の実装や 管理がシンプルに APIサービスの監視先やライフサイクル の管理先を一元化 Copyright © 2025, Oracle and/or its affiliates. 5
  4. APIエコノミーに参加、活用する上で求められるもの 堅牢性/セキュリティ • 認証/認可 • 流入制限 • インバウンド/アウトバウンドアクセ スの量を制限 可観測性

    • モニタリング • ロギング • アクセスやバックエンド実行の監視 /観測が必要 APIデザインの管理 • 開発者ポータル • ドキュメント • OpenAPI仕様への対応による APIの標準化 ライフサイクル管理 • 設計 • 開発/公開 • バージョニング より重要になっていくAPIの管理 </ > Copyright © 2025, Oracle and/or its affiliates. 6
  5. バックエンドサービスの入り口として機能するセキュアなAPIエンドポイント 主な機能 ※それぞれの詳細については後ほどご紹介します • Gateway機能 • カスタムドメイン/TLS証明書 • ヘッダー/クエリ変換 •

    リザルトキャッシュ(OCI Cache with Redisとの統合) • API利用管理 • 堅牢性の提供 • カスタム認証 • JWT検証 • リクエスト検証 • 流入制限 • CORSサポート • ゲートウェイやAPIの監視 • OCI Logging, OCI Monitoringとの統合 • ライフサイクル管理 • GUI/JSONなど用途に合わせたGatewayの操作 • モックサーバ(Stock Response)の提供 • SDK生成 • デザイン管理 • OpenAPI 2.0/3.0のサポート API Gateway Copyright © 2025, Oracle and/or its affiliates. 7 Network (Public/Private) Other Public API Services On-Prem API Server Oracle Cloud Infrastructure API Gateway Authentication Load Balancer Container Engine For Kubernetes Dynamic Routing Gateway Functions ▪ 価格 1,000,000 APIコールごとに¥465
  6. シンプルでセキュアなAPIを簡単に公開 OCIリソースのAPIエンドポ イント • OKEやComputeなど に実装した複数のAPI サーバのエンドポイント を統一化 OCI FunctionsのAPIエ

    ンドポイント • OCI Functionsを社 内外に公開できる • システムやアプリケーショ ンにFunctionsを組み 込むことが可能 オンプレミスAPIサーバとの 接続 • FastConnectやDRG を利用し、 既存のオン プレミスAPIサーバをそ のまま利用可能 3rdパーティAPIと組み合わ せたソリューションの構築 • 外部のAPIサービスもま とめて管理し、自由な システム構成が実現で きる OCI API Gatewayのユースケース Copyright © 2025, Oracle and/or its affiliates. 8
  7. • OCI Monitoringとネイティブに統合される • “oci_apigateway”というメトリック・ネームスペー スでメトリックの収集が行われる • デフォルトで使用可能なメトリック • BytesReceived

    • BytesSent • HttpRequests • HttpResponses • BackendHttpResponses • Latency • IntegrationLatency • InternalLatency OCI Monitoringとの統合 Copyright © 2025, Oracle and/or its affiliates. 10
  8. • OCI Loggingとネイティブに統合される • デプロイメント単位ごとにログ出力の要否が設定 可能 • OCI Loggingのインターフェースを利用して閲覧 •

    Service Connector Hubと併用することでログ出 力を元にした統合的な運用を可能に • 以下の2種類のログが出力可能 • アクセスログ: API Gatewayを介してデプロイメン トとの間で送受信されるリクエスト/レスポンスデー タのサマリー • 実行ログ: API Gateway内の処理に関するリク エスト/レスポンスの実行ログ OCI Loggingとの統合 Copyright © 2025, Oracle and/or its affiliates. 11 デプロイメント単位にログ出力を有効化 アクセスログ 実行ログ
  9. Oracle指定の認証局から発行されたTLS証明書ではなく、ユーザーが取得したTLS証明書が使用可能 カスタム・ドメインとTLS証明書 Copyright © 2025, Oracle and/or its affiliates. 13

    証明書の取得先 ドメイン名 Public IP との紐づけ 証明書の 有効期限と更新処理 Oracle指定の認証局 (デフォルト) <unique>.apigateway.<region>.oci.customer-oci.com 自動 期限切れとなる前に自動更新 証明書サービス 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新 サード・パーティ 独自ドメイン ユーザーが実施 期限切れとなる前にユーザーが更新
  10. API Gatewayを活用したWeb APIに対する認証・認可処理 • API Gatewayの機能を活用することで、各アプリケーションに実装していた認証・認可処理をオフロード • バックエンド実行基盤は、よりビジネスロジックに集中できる • API

    Gatewayで一元管理することで、認証強度や鍵のライフサイクル管理を統一できる Copyright © 2025, Oracle and/or its affiliates. 15 User Functions Functions Functions ビジネスロジック + 認証・認可処理 ビジネスロジック + 認証・認可処理 ビジネスロジック + 認証・認可処理 API Gateway User Functions Functions Functions ビジネスロジック ビジネスロジック ビジネスロジック API Gateway 認証・認可処理を API Gatewayにオフロード
  11. API Gatewayで行われる認証・認可処理の基本的な動き 1. エンドユーザーが認証・認可のために必要な情報(ID/Password, トークン, etc.)含めてリクエストを送信 2. API Gatewayにて、認証やトークンの検証処理が行われる。方法は以下の2通り。 •

    Oracle Functionsで実装したロジックを用いて、認証を行う → 認可プロバイダ・ファンクション • 設定値に基づき、トークンの検証を行う → OAuth 2.0/OpenID Connect 1.0 3. 認証結果、検証済みのトークンに含まれるscopeを用いて、各パス単位に認可処理を行う • スキップ(認可処理を実行しない)も可能 Copyright © 2025, Oracle and/or its affiliates. 16 User Functions Functions Functions API Gateway 1. ID/PW、トークン 2. ID/PWやトークンを 用いて認証や検証処理を行う 3. 各パス単位にscopeを 用いた認可処理 list:greet create:greet update:greet delete:greet list:greet list:greet create:greet create:greet create:greet
  12. 認可プロバイダ・ファンクション • HTTPリクエスト(ヘッダー or クエリーパラメーター) に含まれる情報で認証処理を行うOracle Functionsへ渡し、その情報を検証する事で認証処 理を行う • (オプション)返却された認証結果に含まれる

    scopeを用いてパスに対する認可処理を行う OAuth 2.0/OpenID Connect 1.0 • HTTPリクエスト(ヘッダー or クエリーパラメーター or Cookie)に含まれるID/アクセストークンをAPI Gatewayで検証する • (オプション)アクセストークンに含まれているscope を用いて、パスに対する認可処理を行う 提供されている認証・認可のための機能 Copyright © 2025, Oracle and/or its affiliates. 17 Functions Functions Functions API Gateway Functions Functions Functions API Gateway Functions Identity Provider 認証依頼 認証結果 (オプション)認証結果に含まれる scopeを用いて認可処理 (オプション)アクセストークンのPayloadに 含まれるscopeを用いて認可処理 Identity Domains/IDCS Auth0 Okta Keycloak etc. User User ID/Access Token
  13. • CORS(Cross-Origin Resource Sharing) • あるオリジンで動作しているWebアプリケーションに異 なるオリジンに存在するリソースへのアクセス権を HTTPリクエストによって与えるための仕組み • API

    Gatewayを使用し、デプロイされるAPIに対する CORSサポートを有効にできる • 各API単位の対応が不要になるため、効率的にポリ シーの適応が可能 CORSサポート Copyright © 2025, Oracle and/or its affiliates. 18
  14. コンテキスト変数 Copyright © 2025, Oracle and/or its affiliates. 20 Functions

    バックエンド API Gateway User Context Table 一時的に保存 ポリシーやデプロイメント定義で ${<context table name>[key]} の形式で参照可能 • APIコール等に含まれるパラメータをポリシーやデプロイ メント定義で使用可能にするために、API Gatewayが一時的に保持する変数のこと • ユースケース例 • バックエンドが解釈できる形へリクエストの形式を変 更したい(request.path/queryを用いて、URL の形式を書き換える) • 認証結果に含まれる情報(ユーザーID、etc.) をバックエンドに伝搬したい Context Table Name 概要 request.path APIデプロイメント仕様で定義したパス・パラメータ request.query APIリクエストに含まれるクエリー・パラメータ request.headers APIリクエストに含まれるヘッダー・パラメータ request.auth Authorizer Functionsによって返却されるパラメータ (context)、JWTのPayloadに含まれるclaim request.cert 証明書パラメータ(mTLSハンドシェイク中に正常に検証 されたBase64エンコードされた証明書)
  15. • API Gatewayのバックエンドに対して、グローバルにレート制限を設定可能 • 過剰なリクエストからバックエンドを保護することで、可用性やリソースの公平な使用を維持する • DoS攻撃の防止 • API使用を収益化するために利用を制限する •

    etc. • 1秒当たりのリクエスト数の上限を全リクエストの合計 or クライアントIP単位で指定する 流入制限 Copyright © 2025, Oracle and/or its affiliates. 22 API Gateway Functions User
  16. • API GatewayでHTTPリクエストに対するバリデー ションが可能 • バックエンドサービスに対して不要な負荷をかけないよ うにするために、HTTPリクエストのバリデーション処理 をAPI Gatewayにオフロードする •

    検証のポリシー • Enforcing: すべてのリクエストに対して検証を実 施し、検証が成功したリクエストのみバックエンドへ ルーティングする • Permissive: すべてのリクエストに対して検証を実 施するが、検証結果によらずすべてのリクエストを バックエンドへルーティングする • Disabled: 検証を実施しない リクエストのバリデーション Copyright © 2025, Oracle and/or its affiliates. 23 API Gateway Functions Container Engine For Kubernetes Public API バックエンドサービス ・・・ 【検証可能な項目】 • 特定のヘッダーを含むか • 特定のクエリーパラメーターを含むか • リクエストボディーのコンテンツタイプが期待通りか User
  17. • API Gatewayで、HTTP Request/Responseの 一部の情報に対して変更が可能 • ユースケース • バックエンドサービスが要求するヘッダー(e.g. Accept-Encoding)を一律で付与する

    • セキュリティ上の理由で、レスポンスに含まれる特定 のヘッダー(e.g. Server)を削除する • バックエンドサービスが解釈できるような形にリクエス トのURLを書き換える • etc. ヘッダー/クエリー変換 Copyright © 2025, Oracle and/or its affiliates. 24 Functions バックエンド API Gateway User Functions Functions • ヘッダーの追加、削除、変更 • クエリーパラメーターの追加、削除、変更 • リクエストURLの書き換え • ヘッダーの追加、削除、変更 e.g. Request Headerに対して、上書きの設定を追加をする ・・・
  18. • API GatewayでOpenAPI仕様(2.0 & 3.0)をサ ポート • デザイン・ファーストなAPIの開発サイクルに貢献 • API用のリファレンスドキュメントの共有

    • 開発初期のモックサーバーを容易に生成 • 認証・認可等のポリシーを追加し、さらに高度なスタブと して活用可能 • OpenAPI仕様を元にAPIクライアント用のSDKが各 言語で生成可能 • Android Java • Java • JavaScript • Swift • TypeScript OpenAPI 2.0/3.0のサポート Copyright © 2025, Oracle and/or its affiliates. 26 openapi: '3.0.2' info: title: Employee API version: '1.0' servers: - url: https://oci-api-gateway-host paths: # ... /employee: get: responses: '200': description: return all employee. # ... examples: OpenAPI仕様の定義ファイル をアップロードし、APIリソースを作成 APIリソースを使用して、 API GatewayにAPIをデプロイ
  19. • 開発初期のモックサーバー構築が容易 • APIの内部実装が完成した後は、URLを変更する ことなく固定値から実APIへ置き換え可能 • OpenAPI仕様から作成したAPIリソースを用いて、 APIデプロイメント作成した場合は、デフォルトでモック サーバーとして提供される •

    様々なポリシーと組み合わせることで高度なモックサー バーを構築可能 • 認証・認可 • リクエストのバリデーション • レート制限 • ロギング • … モックサーバー(Stock Response)の提供 Copyright © 2025, Oracle and/or its affiliates. 27
  20. • OpenAPI仕様から作成したAPIリソースを元にAPI クライアント用のSDK(Software Development Kits)を作成可能 • 対応言語 • Android Java

    • Java • JavaScript • Swift • TypeScript クライアントSDKの生成 Copyright © 2025, Oracle and/or its affiliates. 28 SDKを用いたサンプルコード(Java): // Import classes: import com.example.sdk.ApiClient; import com.example.sdk.ApiException; import com.example.sdk.Configuration; import com.example.sdk.models.*; import com.example.sdk.api.DefaultApi; public class Example { public static void main(String[] args) { ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath("https://hoyd2..."); DefaultApi apiInstance = new DefaultApi(defaultClient); Integer employeeId = 56; // Integer | try { apiInstance.employeeEmployeeIdDelete(employeeId); } catch (ApiException e) { System.err.println("Exception when calling DefaultApi#employeeEmplo yeeIdDelete"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); e.printStackTrace(); } } }
  21. • 外部に構築したキャッシュ・サーバーと統合することで、 同一リクエスト(GET, HEAD, OPTIONS)に対する レスポンスをキャッシュ・サーバーから返却する機能 • ユースケース • 同一リクエストに対する応答を高速化したい

    • バックエンド・サービスに対して必要以上に負荷をか けたくない レスポンス・キャッシュ Copyright © 2025, Oracle and/or its affiliates. 29 API Gateway Functions Container Engine For Kubernetes Public API バックエンドサービス ・・・ Cache Server [^1]: リクエストのURL、HTTP メソッド(GET, HEAD, OPTIONS)、 APIデプロイメントのOCIDから導出されるキャッシュ・サーバー内のレスポンスを 一意に識別するためのキー 3. API Response 1. API Request 2. キャッシュ・キー[^1]を 元に照合 2. キャッシュ・ヒットしない場合は バックエンドサービスに問い合わせ Key Vault キャッシュ・サーバー へのパスワードを格納 User OCI Cache with Redis
  22. リソースの全体像 API の使用計画をサブスクライバごとに設定し、利用の制限とメトリックの収集がサブスクライバ単位で可能に 使用計画には、レート制限(1 秒あたり n 回まで)と割り当て制限(分/時間/日/週/月あたり n 回まで)を設けるこ とができる

    制限は、クライアント/コンシューマーごとに一意に設定したクライアント・トークンを用いて行われる 使用計画(使用プラン)とサブスクライバ Copyright © 2025, Oracle and/or its affiliates. 31 使用計画 資格 レート制限 割り当て制限 ターゲット・ デプロイメント クライアント サブスクライバ クライアント・トークン 1 n n 1 1 1 1 n n 1 1 1
  23. • AWSと比較して全体で約40%のコスト削減。またOCI Media Serviceのストレージ使用量ベースの課金と安価な データ転送費用により、当該部分は約80%のコスト削減 • API GatewayとObject Storageで静的Webサイト・ホス ティング機能を実装。また動画ファイル処理実行には

    Functions、DBとしてはNoSQL Databaseを活用し、拡 張性を意識したサーバレス構成に • OCI Data Scienceで動画のAI リコメンデーションを実現 • 今後の計画として、MinutesGamesのプラットフォームを基に、 小売、教育、ヘルスケアなど多様な業界向けのソリューション 開発を企画中。小売業向けにはライブコマース機能を強化し、 教育分野では対話型学習コンテンツの配信を可能に CLINKS 株式会社様 Copyright © 2025, Oracle and/or its affiliates 34 OCIのコストパフォーマンス、拡張性を活かし、 画期的なサーバレスアーキテクチャを構築 https://app.minutes.games/teaser/
  24. OCIのコストパフォーマンス、拡張性を活かし、画期的なサーバレスアーキテクチャを構築 MinutesGames • クリエイターが開発したミニゲームを、ショート動画形式に変 換し配信する統合プラットフォーム。ユーザーの視聴履歴や 好みに基づいて動画を推奨。「1分で心を満たす」体験を提 供し、「ゲーム開発」の再評価を実現 従来の課題 • 大容量の動画変換・ストリーミング配信システムを、コスト効

    率良く、かつ急激な需要にスケーラブルに対応できる構成で 構築する必要があった。広範なユーザー層にコンテンツを届 ける AI リコメンデーションの仕組みが必要だった 採用ポイントと導入効果 • AWSと比較して全体で約40%のコスト削減。またOCI Media Serviceのストレージ使用量ベースの課金と安価な データ転送費用により、当該部分は約80%のコスト削減 • API GatewayとObject Storageで静的Webサイト・ホス ティング機能を実装。また動画ファイル処理実行には Functions、DBとしてはNoSQL Databaseを活用し、拡 張性を意識したサーバレス構成に • OCI Data Scienceで動画のAI リコメンデーションを実現 システム構成イメージ 利用サービス • OCI Media Services / OCI Functions/ OCI API Gateway / NoSQL Database Cloud Service / OCI Data Science, etc. 顧客事例:CLINKS 株式会社様 Copyright © 2025, Oracle and/or its affiliates 35 https://app.minutes.games/teaser/
  25. <開発のポイント> ・ Flutterを活用したマルチOSアプリケーション ・ Geo Fencingを利用したバックグラウンドの位置情報取得 ・ リアルタイムポイント処理の実装をAPI Gateway +

    Functionsで実装 <効果> ・ 超短期間(3ヵ月)での実装を実現 ・ 競合に比べて、およそ1/3程度での初期コスト ・ アプリ開発と同時に分析ダッシュボードも提供 Hokkaido Love! アプリ Copyright © 2025, Oracle and/or its affiliates. 36
  26. OCI Region Compartment(Hokkaidolove) Tenancy East Daily Analyst Refer from Dashboard

    Database Actions APEX Access Campaign Contents ORDS For develop Functions Conn from East Daily GIP VCN App Users Developer s Private Subnet(db) Public Subnet(lb) Public Subnet(api) Private Subnet(fn) Private Subnet(vm) API Gateway Autonomous Transaction Processing ATP APEX Bastion Load Balancer Virtual Machine Functions Object Storage Conn from App Direction1. 抜群の費用対効果 Directioin2. 利用状況に応じた 柔軟なスケーラビリティ Direction3. 低価格大容量ストレージ Hokkaido Love! プラットフォーム Copyright © 2025, Oracle and/or its affiliates. 37