Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ABEMAの本番環境負荷試験への挑戦
Search
Miyazaki Taiga
July 12, 2025
Technology
3.1k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ABEMAの本番環境負荷試験への挑戦
SRE NEXT 2025 で発表した資料です。
Miyazaki Taiga
July 12, 2025
More Decks by Miyazaki Taiga
See All by Miyazaki Taiga
SRE チームの再出発 / ゆるSRE #16
mk2taiga
2
690
30時間限界突破フェスに向 けた SRE の取り組み
mk2taiga
0
48
ABEMAの安定稼働を支えたOpenTelemetryの導入事例
mk2taiga
0
11
Other Decks in Technology
See All in Technology
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.7k
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
120
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
160
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
180
WebGIS AI Agentの紹介
_shimizu
0
560
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.4k
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
200
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
210
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
260
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
410
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
200
水を運ぶ人としてのリーダーシップ
izumii19
4
990
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
The Limits of Empathy - UXLibs8
cassininazir
1
370
Deep Space Network (abreviated)
tonyrice
0
210
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
My Coaching Mixtape
mlcsv
0
150
A Soul's Torment
seathinner
6
3k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
Transcript
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
1 ABEMA の 本番環境負荷試験への挑 戦 2025 July 12th 宮﨑 大芽
AbemaTV, Inc. All Rights Reserved 宮﨑 大芽 2022年にサイバーエージェントに中途入社。 入社後はABEMAにてバックエンドエンジニアとしてサービス開発に従事。 2024年よりABEMAのSREとしてサービスの信頼性向上を目指し、特に本番環境を用い
た負荷試験や障害試験の領域を中心に活動しています。 2 Profile
AbemaTV, Inc. All Rights Reserved 3 1. ABEMAについて 2. 「本番」で試験するに至った背景
3. 設計 4. 導入計画 5. 組織の合意形成 6. 得られた成果 7. 今後の展望 INDEX
AbemaTV, Inc. All Rights Reserved ABEMAについて 4
AbemaTV, Inc. All Rights Reserved ABEMAについて 登録不要で、いつでも無料で楽しめる 24時間365日編成されているリニア配信と 見逃した作品を好きなタイミングでオンデマンドでも楽しむこともできます。 国内最大級のオリジナルエピソード数
オリジナルエピソード数は国内発の動画サービスで日本No.1(※)を誇り、 注目の新作映画、国内外の人気ドラマ、話題のアニメなど豊富なラインナップの作品や、 様々な音楽や舞台のオンラインライブも展開。 ※2024年8月時点、自社調べ 100%プロコンテンツ サイバーエージェントとテレビ朝日 それぞれの強みを活かした制作体制で高品質なコンテンツを配信しています。 多彩なラインナップ 24時間編成のニュース専門チャンネルをはじめ、 オリジナルのドラマや恋愛番組、アニメ、スポーツなど、 多彩なジャンルの約25チャンネルを24時間365日放送しています。 5
AbemaTV, Inc. All Rights Reserved ABEMA 紹介 複数デバイス対応・多彩なチャンネルラインナップ 6
AbemaTV, Inc. All Rights Reserved 2025 年 4 月 2,892
万 WAU 3,408 2,892
AbemaTV, Inc. All Rights Reserved ABEMA: High Level Cloud Architecture
8
AbemaTV, Inc. All Rights Reserved 「本番」で試験するに至った背景 9
AbemaTV, Inc. All Rights Reserved 人気番組やニュース速報による突発的なトラフィック急増が 度々発生する。 突発的なトラフィック 「本番」で試験するに至った背景: ABEMAの状況
10 ABEMA はイベント配信の時だけでなく、平常時においても 多くの同時接続が可能であることが要件となってる。 事業要件
AbemaTV, Inc. All Rights Reserved 「本番」で試験するに至った背景: ABEMAの状況 11 • サービスの成長に伴い、システムの複雑性も増加
• 試験を行うために本番と同等の環境を構築し、またそれを運用していくのは時間的・金銭的コストが指数的に増加する ため非現実的 • 気軽に試験できる状況ではない サービスの成長に伴い、システムは複雑に
AbemaTV, Inc. All Rights Reserved 我々の決断 「本番」で試験するに至った背景 12 • 課題
◦ 事業要件や突発的なトラフィックに対応できる必要がある ◦ システムの複雑性やコストから気軽に試験できる状況ではない ◦ 負荷試験環境は仮想環境であって、本番特有の問題を再現できないことも • 結論 ◦ 本番に近づけた検証環境を使うのではなく、本番環境そのものを使う
AbemaTV, Inc. All Rights Reserved 設計 13 「安全」を担保しながら実現するために
AbemaTV, Inc. All Rights Reserved 設計の基本方針は「ユーザーの体験を損なわない」こと 設計 14 • 試験の影響範囲を限定的にする
• 危険を察知したら即座に手動/自動で停止できる機構を持つ
AbemaTV, Inc. All Rights Reserved 設計 15 全体アーキテクチャ図
AbemaTV, Inc. All Rights Reserved 設計 16 • 本番環境の同じクラスター内に構築された、もう一つのアプリケーション群 •
PodとNodeを完全に分離し、 ABEMA利用者のリクエストを捌く Podのリソースを食い潰さない • データソースは共有している ◦ ABEMAは様々な種類の DBを利用していることから DBまで複製するのは厳しい コア技術 : マルチテナント化
AbemaTV, Inc. All Rights Reserved 設計 17 • Uber, Mercariさんの取り組みをヒントにさせていただきました
コア技術 : マルチテナント化 https://www.uber.com/en-JP/blog/multitenancy-microserv ice-architecture/ https://engineering.mercari.com/blog/entry/20220218-dy namic-service-routing-using-istio/
AbemaTV, Inc. All Rights Reserved 設計 18 • Kubernetesの自作カスタムコントローラーによる Tenant構築
• 開発者はカスタムリソースを定義するだけで、迅速に Tenantを構築可能 • レプリカ数, CPU, Memoryなどの変更をしたい場合に、カスタムリソース 経由で変更が可能 Operatorによる宣言的なテナント構築
AbemaTV, Inc. All Rights Reserved 設計 19 1. オリジナルのリソースを取得し、 nameなどのフィールドを書き換えて作成
a. カスタムリースでは CPU, Memoryなどを個別に定義できるので、それらも含めて全て書き換え 2. Tenantアプリケーションへトラフィックが流れるように、 VirtualServiceにヘッダーベースルーティングを追加 Operatorの内部動作 : 自動的なマニフェスト書き換えとデプロイ
AbemaTV, Inc. All Rights Reserved 設計 20 • Tenantアプリケーションを構築しただけでは、トラフィックの制御はできない •
VirtualServiceのヘッダーベースルーティングを動的に追加することで Tenantアプリケーション間の通信を実現 ◦ 大元のVirtualServiceを更新したくなかったので、 Delegate機能を利用 Istioによるトラフィック制御
AbemaTV, Inc. All Rights Reserved 設計 21 • 試験対象のAPI一覧をもとに、必要な Tenantアプリケーションを構築するための
Custom Resourceを自動生成でき るようにした カスタムリソースの作成を簡単にするアプローチ
AbemaTV, Inc. All Rights Reserved 設計 22 • 負荷シナリオ ◦
メトリクスの時系列データから k6シナリオを自動生成 • 負荷試験に利用するリクエストパラメータ ◦ 課題 ▪ システムの変化に追従していくのが難しい ▪ 番組など時間的な制約があり、一度作った試験用のリクエ ストパラメータを使い回せない ◦ 直近のアクセスログからリクエストパラメータを自動生成 負荷トラフィックの自動生成
AbemaTV, Inc. All Rights Reserved 設計 23 • モニタリングは既存のモニタリングツールをそのまま利用 •
DBは共有リソースとなっているため、より注意が必要 ◦ 利用している DBの中でアラートが未設定のものを調査し、アラートの追加を行った • Tenantと(試験)Versionで対象の試験のメトリクスのみを表示できるように対応 ◦ 例: Tenant = loadtest, Version = Latest で最新の試験のメトリクスのみを表示 モニタリングとアラート
AbemaTV, Inc. All Rights Reserved 設計 24 • k6のThresholds機能を利用して、性能を下回ったタイミングで負荷試験を停止 ◦
本来のSLOと同じ値でthresholdsを設定すると、負荷があまりかかっていない段階で停止することもあった ため、少し緩めた閾値で設定 自動緊急停止トリガー
AbemaTV, Inc. All Rights Reserved その他 設計 25 • DBリソースを共有していることから、主にGET
APIを負荷試験の対象としている ◦ ABEMAのサービス特性上、Readが多いためことから、GET APIの試験だけでも高い効果が得られる • POST系のAPIについては、データ汚染を防止するために特定のダミーフラグを付与し、試験後にデータをク リーンアップできる仕組みを導入 ◦ 優先度が高いPOST系APIのみ試験対象としている • アクセスログ・アクションログなど調査や分析等に利用されるデータへの書き込みはノイズになることから省く ような対応を入れた • 負荷試験によってWAFが誤作動しないように、OperatorでTenantのBackendConfigの設定を修正
AbemaTV, Inc. All Rights Reserved 設計 26 全体アーキテクチャ図(再掲)
AbemaTV, Inc. All Rights Reserved 導入計画 27 どのように「段階的」に進めたか
AbemaTV, Inc. All Rights Reserved 導入計画 28 • 導入フェーズ ◦
Dev環境で手動による Tenantの構築、負荷試験を実施し実現可能性を検証 ▪ トラフィックが意図した挙動をするか ▪ 意図しない書き込みなどの副作用がないか ◦ Prd環境で手動による Tenantの構築、高トラフィックの負荷試験を実施 ▪ Istioによるルーティングがボトルネックとならないか懸念があり、大きく動き出す前に検証を行った ◦ 仕組みをスケールさせるための基盤構築 ▪ Custom Operator ▪ 負荷トラフィックの自動生成ツール ◦ 最初は単一エンドポイントで試験を実施し、徐々に対象範囲を広げる • 運用フェーズ ◦ 継続的な実施 段階的な導入
AbemaTV, Inc. All Rights Reserved 組織の合意形成 29
AbemaTV, Inc. All Rights Reserved 組織の合意形成 30 • 前提として、定期的に最大同時接続数の負荷に耐えられるか チェックしたいという、
経営側の課題感もあった • 現状の共有 ◦ 複雑性の増加により、通常の手法での解決は難しい ◦ 既存の方法ではコスト(リソース・お金)がかかる • 意思決定のための判断材料を渡し合意を得た ◦ コスト削減メリット ◦ 大規模かつ日本国内であれば事例もないので技術的価 値も大きい 本番で試験することへの説得と理解獲得
AbemaTV, Inc. All Rights Reserved 組織の合意形成 31 • プロダクト開発チーム ◦
試験対象コンポーネントの特性や懸念点のヒアリング • Developer Productivityチーム ◦ 可観測ツールのコストについての懸念ヒアリング • Cloud Platformチーム ◦ インフラ設計、コストについての共有と合意 ◦ 負荷試験によるトラフィック増加に関して Google への共有 • データマネジメントチーム ◦ データ汚染に関するリスク箇所の整理と対策 チーム間のコラボレーション
AbemaTV, Inc. All Rights Reserved 組織の合意形成 32 • 負荷試験を実施して良いボーダーラインを決定 ◦
同時接続数など • 負荷試験の実施前に開発者に対して必ず周知 ◦ 万が一障害が発生した場合に、迅速に連携を取れるように その他
AbemaTV, Inc. All Rights Reserved 得られた成果 33
AbemaTV, Inc. All Rights Reserved • 事業要件として掲げられている最大同時接続数まで スケールできるかのテスト • 最大同時接続数まで徐々に負荷を増やしながら試
験実施 スケールテスト 実践した2種類の負荷試験 34 • 人気番組やニュース速報による突発的なトラフィック を想定したテスト • 仮装待機室によってジョインレートを定めており、そ の最大の閾値で試験実施 スパイクテスト
AbemaTV, Inc. All Rights Reserved Contextual Bandit を用いたレコメンドシステムのリリース前負荷試験 35 •
新しいアルゴリズム (Contextual Bandit)を用いたレコメンドシステムのリリース前負荷試験に利用 • レコメンドシステムはデータ次第で負荷が変わる可能性があったため、本番環境で実際のデータを利用して負荷試 験を実施した • 実際のデータかつ本番で負荷試験を行った事によるエンジニアの安心感 性能試験 https://developers.cyberagent.co.jp/blog/archives/57070/
AbemaTV, Inc. All Rights Reserved • 人的・金銭的に多額のコストがかかる • 環境の二重管理が不要 に
• 毎年の負荷試験環境への予算を 85%削減 • 大規模イベント時のコストを考慮すると 99%削減見込み 試験環境の運用にかかるコスト コスト削減 36 • 負荷試験環境としてシステム全体の構築に数ヶ月か かっていた • 環境構築にかかる時間を 99%削減(数十分に短縮) 環境構築にかかる時間的コスト
AbemaTV, Inc. All Rights Reserved 今後の展望 37
AbemaTV, Inc. All Rights Reserved 継続的な負荷試験 今後の展望 38 • ABEMAの最大キャパシティを把握するための大規模な負荷試験を定常的に
行う運用体制の構築 • リリースプロセスへの統合 ◦ リリースが性能に与える影響をリリース前に評価
AbemaTV, Inc. All Rights Reserved 今後の展望 39 • これまでも Chaos
Mesh を用いたカオスエンジニアリングは度々行ってきた ◦ 開発環境のみでしか実施できない ◦ 開発中のエンジニアや QAの手を止める必要があった • Tenantアプリケーションを利用し、 ABEMA利用者や開発者に影響を与えずに、開発環境・本番環境でカオスエンジニアリン グが可能だと考えている ◦ 定常的に実施される自動カオスエンジニアリングも視野 カオスエンジニアリングへの応用
AbemaTV, Inc. All Rights Reserved 今後の展望 40 • マイクロサービスアーキテクチャを採用しているが、複雑さからローカルでサーバー起動による動作確認は難しい •
アプリケーションやサービス間の連携に起因する問題は、 mainブランチへのマージと開発環境へのデプロイを経なければ 確認できない • Tenantアプリケーションを利用した DarkCanaryリリースを導入 ◦ PRからTenantアプリケーションを立ち上げられるフローを検討中 DarkCanaryリリースへの応用
AbemaTV, Inc. All Rights Reserved 今後の展望 41 • Ingress ではヘッダーベースルーティングができないため、テナント用に
Ingress を別途作成している • Gateway API を利用することで、ヘッダーベースルーティングやミラーリングが可能に GatewayAPIを利用したマルチテナント基盤のブラッシュアップ
AbemaTV, Inc. All Rights Reserved まとめ 42
AbemaTV, Inc. All Rights Reserved まとめ 43 • 事業要件と突発的なトラフィックへの対応、システム複雑化、既存手法のコストが課 題
• 「本番」環境での負荷試験を安全に実施するため、マルチテナント化を提案 • 段階的な導入と組織間の合意形成を経て、負荷試験・コスト削減での成果 • 今後は継続的な負荷試験、カオスエンジニアリング、DarkCanaryへの応用を目指 す
AbemaTV, Inc. All Rights Reserved