API Gatewayの話
@charlier_shoe
自己紹介
早川 博(はやかわ ひろし)
@charlier_shoe
• 日本オラクルのプリセールス・エンジニア
- 製品選定のコンサルティング、アーキテクチャ設計など、販売活動の
技術的支援がミッション
- Java SE / Java EE / WebLogic / PaaS…
• 本発表は個人の見解であり、所属組織の公式見解ではありません
(;´Д`)
今日の話
BFF(Backend for Frontend)
がきっかけ
こういうのってミドルウェアがもうあって設定だ
けで組めたりしたら楽なんじゃないか。
と思ったけどそんなに単純じゃなかったので
ざっくり調べてみたという話です。
API Gateway
サービス呼出しを仲介して
いい感じにしてくれる
SC
期待すること
SC
認証、データ変換、
APIアクリゲーション、エンドポイント集約
アクセス分析
ルーティング、流量制御…
APIアグリゲーション
複数のサービス呼出しをまとめて、適切な形で
返す
SC
S
S
本
Sam Newman(著)
佐藤 直生(監訳), 木下 哲也(訳)
オライリー・ジャパン(2016)
本の場合
APIのセキュリティ
• クライアントにAPIキーを払
い出し
• 正しいキーがないリクエスト
はGatewayが拒絶
本の場合 その2
BFF
(Backend for Front End)
• APIをクライアントに最適化し
た形式に変換
• 複数のAPI呼出しを集約
API Gatewayの実装
• クラウドサービス
• AWS API Gateway
• Netflix API Gateway
• Open Source系
• Tyk
• Kong
• データフェッチ系 [^1]
• Falcor
• GraphQL
• SOA勢
• Oracle Service Bus
• IBM Integration Bus
[^1]
FalcorやGraphQLがAPI Gatewayを謳っているわけではないのでご注意を
Tyk
https://tyk.io/
Open SourceのAPI Gateway
認証
データ変換
アクセス分析
ルーティング
流量制御
だいたいできる…ただし
Tyk
SC
S
S
APIアクリゲーションはできない…
BFFに使うには厳しい
Falcor
https://netflix.github.io/falcor/starter/what-is-falcor.html
• Client-ServerでJSON-Graph形
式のデータ構造を共有
• ClientはJSON-Graphの必要な
部分を指定してデータを取得
• 一度取得したデータはキャッ
シュしておく
Falcor
SC
S
S
Falcor
データ・フェッチ
認証
データ変換
アクセス分析
ルーティング
流量制御
「そもそもAPI Gatewayのつもりないんで…」
Oracle Service Bus !!
Enterprise Service Bus
S S S S S S
C
全部できるよ!
ちょっとまってほしい
「1 つのことにすべての希望を託し、ゲートウェイを頼ってすべての段階に対処してい
るのを目にしたことがあります。また、誰もが単一障害点があるとどうなるかわかって
います。」
「ゲートウェイレイヤはますます多くの機能を担う傾向があり、結局は巨大な結合点と
なる可能性があります。」
じゃあBusの冗長化か? 何処までやるべきか…。
どうすればいいか考えてみる
S
S
S
C
C
認証、エンドポイ
ント集約
API
アグリゲーション
結合してもいいところはどこ?
プロトコル・スタック(的なもの)を想定しときに、
サービス機能より下位のレイヤーは結合してもよいと
考えては?
認証
エンドポイント解決
サービス サービス サービス
偉い人も言っている
「OpenID Connect は、インターネット上の
『アイデンティティ層』をなすものです。」
Fin.
https://www.facebook.com/groups/oracle.cloud.developers/
Facebookグループ
クラウド・テクノロジーを語ろう。
Oracle Cloud Developers

Api gatewayの話