PrivateProxy API ThirdParty/ SaaS API API ServerSide Public WebApp NativeApp Internet xxClient xxSDK xxService Internet クライアント層 サービス層 API ServerSide xxClient External API 個別実装による属⼈化された APIによる同期データ連携 同期データ連携が適切でない
API PrivateProxy API ThirdParty/ SaaS API API ServerSide Public WebApp NativeApp Internet xxClient xxSDK xxService Internet クライアント層 サービス層 API ServerSide xxClient External API API Gateway導⼊ イベント駆動型 データ連携導⼊
を活⽤した API Gateway 1. API Gateway を導⼊した同期データ連携 2. Spring Cloud Gateway の採⽤背景 3. Spring Cloud Gateway によるルーティング制御および認証プロキシの構築 4. Resilience4j によるレジリエンス実装 5. Spring Security を活⽤した共通認可
Private API Public API PrivateProxy API ThirdParty/ SaaS API ServerSide NativeApp WebApp Internet xxClient xxSDK xxService Internet 横断的関⼼事が個別管理、標準化されていない 全体を把握するのが困難 クライアント層 サービス層 • API連携部分の実装が個別に独⽴しており、認証‧認可やログ出⼒、通信などの横断的関 ⼼事が適切に管理できていない状態である。 • クライアント層、サービス(API) 層の運⽤保守が標準化されておらず、属⼈化傾向にあ る。
ルーティング 認証プロキシ 認可 (OAuth 2.0) レジリエンス (通信制御) API Gatewayが解決する横断的関⼼事と対応する技術要素 Spring Framework / Spring Boot Resilience4j (Spring Cloud 統合) Spring Security
を活⽤した API Gateway 1. API Gateway を導⼊した同期データ連携 2. Spring Cloud Gateway の採⽤背景 3. Spring Cloud Gateway によるルーティング制御および認証プロキシの構築 4. Resilience4j によるレジリエンス実装 5. Spring Security を活⽤した共通認可
を活⽤した API Gateway 1. API Gateway を導⼊した同期データ連携 2. Spring Cloud Gateway の採⽤背景 3. Spring Cloud Gateway によるルーティング制御および認証プロキシの構築 4. Resilience4j によるレジリエンス実装 5. Spring Security を活⽤した共通認可
パスベースルーティング クライアント Spring Cloud Gateway • パスベースのルーティングを採⽤し、API Gateway のI/Fとしてはパスにバックエンド サービスの「事業ドメイン」と「サービス名」をプレフィックスとして付与する • プレフィックスを元にバックエンドサービスを解決し、プレフィックスを除去したパス へプロキシする API A ルーティング処理 Host: serviceA.wealthnavi.com GET /** GET /domainX/serviceA/** 29
B クライアント Spring Cloud Gateway • Spring MVC 標準のフィルターに Spring Cloud Gateway の各機能が適⽤されて処理され る API A ルーティング処理 Host: serviceA.wealthnavi.com GET /** GET /domainX/serviceA/** ルーティング制御構成イメージ Filter Predicates 33
Gateway • ルーティング処理と合わせてカスタムフィルターによる認証処理が実⾏される GET /domainX/serviceA/** Domain X API A 認証 Host: serviceA.wealthnavi.com Authorization: Bearer XXX GET /** 外部 認可サーバ GET /token 認証プロキシ構成イメージ Route ルーティング処理 認証処理 カスタムFilter
を活⽤した API Gateway 1. API Gateway を導⼊した同期データ連携 2. Spring Cloud Gateway の採⽤背景 3. Spring Cloud Gateway によるルーティング制御および認証プロキシの構築 4. Resilience4j によるレジリエンス実装 5. Spring Security を活⽤した共通認可
を活⽤した API Gateway 1. API Gateway を導⼊した同期データ連携 2. Spring Cloud Gateway の採⽤背景 3. Spring Cloud Gateway によるルーティング制御および認証プロキシの構築 4. Resilience4j によるレジリエンス実装 5. Spring Security を活⽤した共通認可
• イベント駆動型(⾮同期):1対多で配信できるため、スケールアウトしやすい(※)。 API 連携 Request - Response 呼び出し元 呼び出し先 ① Request ② Response イベント駆動型データ連携 Pub/Sub 連携 Publisher 連携先 A 連携先 B ① Publish ② Subscribe Message Broker API 連携とイベント駆動型データ連携の整理 (※)補足:以降「Pub/Sub 連携」と記載。