株式会社AbemaTV / 開発事業本部
envoy/ratelimit を活用したGlobal API Rate Limit
<概要> ・分散環境に対応したGlobalなAPI Rate Limitのmicroservice, middleware構築を行い、セキュリティの向上を行う ・Cloud Logging・Grafana・BigQueryを活用したリクエストログのMonitoringやAlert, 分析基盤を構築し閾値の調整やメンテナンス、攻撃者の特定を可能にし安全で良い効率的な運用を行えるようにする <業務内容> ・システムの要件定義 ・技術選定や設計方針の選択肢・メリデメの検討 ・GoによるバックエンドのRate Limit Middlewareの実装・テスト・動作確認やQA ・負荷試験による性能評価 ・Cloud Logging, Grafana, BigQueryを活用したリクエストログのMonitoringやAlert, 分析基盤の構築 ・閾値の設定方法などのポリシー策定や利用者のためのRunbook, READMEなどドキュメント作成 <取り組み> ・ABEMAにおけるシステムの要件定義を行い、その要件にあった技術選定を行った。自作、Cloud Armor、CloudFlareなど複数選択肢のメリデメを検討し一番機能要件や非機能要件に合致したenvoy/ratelimitを活用して実装することを意思決定した。 <これからやること> ・READMEやソースコードから仕様や利用するにあたってのベストプラクティスを理解し実装を行う。 ・K6を使って負荷試験を行い1Podあたりの性能限界や線形にスケールするかを調査したりProfilerやTraceなどを活用したボトルネック除去によるパフォーマンスチューニングを行う ・PreviewMode(ログは出力するがエラーは返さないで処理を行う)をMiddlewareに実装し初回導入時などに発生する閾値の設定ミスによる障害を最小限にする。 ・検知したリクエストログをBigQueryでPoolしGrafanaを使い可視化を行い分析やモニタリングを行えるようにしたり検知時にslack通知を行い悪意のあるユーザーを特定しIPやUserIDなどでBANできるようにする ・エンドポイントのRPSなどの値を元にRateLimitの閾値を設定するポリシーや手順を整備し事故なく安全に適切なRateLimitの閾値の調整を行えるようにする。