Kong活用事例について

4.4K Views

May 17, 19

スライド概要

Kong活用事例について

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Kong活用事例について ヤフー株式会社 崔俊 May 16th, 2019

2.

自己紹介 崔俊 • プラットフォームエンジニア • API Gatewayチーム開発メンバー • アルゴリズムで問題解決するのが好き 趣味 • ゲームいろいろ • 最近ハマっているゲーム:Days Gone(PS4) image: ソニー・インタラクティブエンタテインメント社「Days Gone」スクリーンショット Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 2

3.

アジェンダ 1. ヤフーについて 2. Kongを選んだ理由 3. Kongによるマルチデータセンタープラットフォームアーキテクチャ 4. ヤフー内のKongユースケース 5. まとめ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 3

4.

1.ヤフーについて Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 4

5.

Yahoo! JAPAN 100+ サービス 150,000+ サーバ 出典:Yahoo!プロモーション広告ホームページ、Yahoo! JAPAN媒体資料(2018年12月版) https://promotionalads.yahoo.co.jp/online/yj_mediasheet201812.html Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 74,500,000,000 PV/月 (2018年度平均) image: アフロ 5

6.

技術面における現在の状況 ・状況 ・多くのサービスはモノリシックなアプリケーションで構成されており、 Openstack VM上で動いている ・問題 ・開発スピードが遅い ・運用メンテナンスコストが高い ・計画 ・プラットフォームアーキテクチャのモダン化 ・モノリシックからマイクロサービスへ移行 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 6

7.

Internal Platforms for Microservices Architecture プラットフォーム ソリューション PaaS Pivotal Cloud Foundry CaaS Kubernetes FaaS Apache OpenWhisk MQ Apache Pulsar API Gateway Kong Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 7

8.

2.Kongを選んだ理由 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 8

9.

API Gatewayで実現したいもの 1. 社内に乱立しているAPIを集約することでAPIの管理を容易にする ・ ✅ Kongが特化している機能 2. 現在サービス毎に実装している汎用的な処理を統合し、サービスの開発コストを下げる ・ ✅ Kong pluginsで様々な処理を挟むことができる 3. モノリシックなアプリケーションからマイクロサービスへ段階的に移行する ・ ✅ Kongの動的なルーティング機能とカナリアプラグイン ✅ 上記3つの項目はKongで実現できる Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

10.

ヤフー社内の要件 ・一つのプラットフォームを複数の利用者が共有出来る(マルチテナント) ・✅ Kong EEのワークスペース機能がマルチテナントを実現 ・エンドポイントに対して社内の認証機構を組込むことが出来る ・✅ 自分でKong pluginが開発出来る ・ダウンタイムなしでルーティングの設定ができる ・✅ ルーティング情報はAdmin API経由で動的に設定ができる ✅ Kongは全ての要件を満たす Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

11.

3.Kongによるマルチデータセンター プラットフォームアーキテクチャ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 11

12.

マルチデータセンターの重要性 ・日本は毎年多くの地震が発生する ・2018年 ・2179回 (震度1以上) ・11回 (震度5以上) ・ヤフーでは災害が起こった際に、被災地の住民がスムーズに避難し適切な行動をとる ために有用な情報をリアルタイムで発信している ・ヤフーサービスは地震によってある拠点のサーバが落ちても他の拠点でサービスが継 続できるように設計しておく必要がある ・東西冗長構成が非常に重要 出典:気象庁ホームページ、平成 30 年(2018 年)の日本の地震活動 - 気象庁 https://www.jma.go.jp/jma/press/1901/11a/1812jishin2018.pdf Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

13.

マルチデータセンター構成(通常時) External client L7 Router for FE (east) Frontend (east) Kong (east) Backend (east) L7 Router for FE (west) Frontend (west) Kong (west) Backend (west) GSLB ・GSLB (Global Server Load Balancer)は複数のサイト間でロードバランスを行う機能 ・東西のKongクラスタはそれぞれのデータベースを参照しており、同期はされてない ・東側Kongクラスタは通常時には東のbackendにプロキシされている Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

14.

マルチデータセンター構成(非常時) External client L7 Router for FE (east) Frontend (east) Kong (east) Backend (east) L7 Router for FE (west) Frontend (west) Kong (west) Backend (west) GSLB ・GSLBは定期的にL7 Routerのhealth状況をチェック ・東データセンターが機能停止した場合、GSLBは全てのリクエストを反対拠点にプロキシ 従って、全体としてはサービスの提供を継続できる Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

15.

4.ヤフー社内のKongユースケース 1)Kong本体の機能 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 15

16.

#1 カナリアリリース ・Openstack VMからPaaSに移行 ・例 Kong 1. 10%のリクエストをPaaSに向ける Canary Plugin 2. 一週間様子を見る 3. 問題なければ50%のリクエストをPaaSに向ける 4. 一週間様子を見る 90% of requests 5. 全てのリクエストをPaaSに向ける 10% of requests ・カナリアリリースで安全にマイクロサービス へ移行できる OpenStack VM Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. PaaS

17.

#2 レート制限 レート制限を超えていない場合 Kong API node レート制限を超えている場合 ・レート制限を超えた場合、Kong側で設定した特定のレスポンスを返す ・backend側の想定数以上のリクエストがプロキシされないように対策 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 17

18.

4.ヤフー社内のKongユースケース 2)独自で開発したPlugin Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 18

19.

#3 Athenz RBAC認証 Token Client Kong Backend API Athenz-auth plugin Authorization Athenz Server ・ 社内の認証機構にはAthenzを利用している ・ AthenzはRBAC(ロールベースアクセス制御)システムOSS ・ 我々はKong pluginを開発してathenzによる認証認可を実現 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed.

20.

#4 abuse対策 abuseの疑い Kong API node1 API node2 API node3 アクセス拒否 ・ある時間以内に同一のRemote IPから何回以上アクセスがあった場合アクセスを拒否 ・DoS等のabuse疑いのあるリクエストをサーバーへ到達するのを防ぐ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 20

21.

#5 Sorry Page API node1 Kong API node2 API node3 カスタマイズした固定レスポンスを返す ・backend APIが全部落ちた場合、Kong側で直接カスタマイズしたレスポンスを返す ・無駄なアクセスを防ぐことでトラフィック負荷およびレイテンシを軽減できる Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 21

22.

#6 active/standby構成 API node1 東DC API node2 API node3 Kong API node4 西DC API node5 API node6 ・backend APIが全部unhealthyになった場合、予め設定したオリジンにフォールバック ・通常時は東DCのbackend APIに向いていて、東DCのbackend APIが全部unhealthyに なった場合、予め設定した西DCのbackend APIに向けることによってactive/standby構 成を実現できる Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 22

23.

active/standby構成のデモ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 23

24.

active/standbyデモ構成図 東API nodeが一つでも生きている場合 Kong East node1 東 east upstream East node2 route service active/standby plugin West node1 西 west upstream 東API nodeが全部落ちた場合 Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. West node2 24

25.

5.まとめ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 25

26.

まとめ アジェンダ 内容 ヤフーについて ヤフーサービスの規模と技術面における状況 API Gatewayで実現したいものと Kongを選んだ理由 ヤフー社内の要件 Kongによるマルチデータセンター プラットフォームアーキテクチャ マルチデータセンターの重要性と構成 カナリアリリース、レート制限、 ヤフー内のユースケース Athenz RBAC認証、abuse対策、 Sorry Page、 active/standby構成+デモ Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 26

27.

ご清聴ありがとうございます !! Copy right (C) 2019 Y ahoo Japan Corporation. All Rights Reserv ed. 27