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
リリースを支える負荷測定
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
gree_tech
PRO
January 17, 2020
Technology
0
590
リリースを支える負荷測定
「WFS Tech Talk #2」で発表された資料です。
https://gree.connpass.com/event/158257/
gree_tech
PRO
January 17, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
3.7k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
43
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.6k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
300
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
300
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
1.7k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
430
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
460
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
320
Other Decks in Technology
See All in Technology
スピンアウト講座05_実践活用事例
overflowinc
0
1.3k
AIエージェント時代に必要な オペレーションマネージャーのロールとは
kentarofujii
0
140
スピンアウト講座01_GitHub管理
overflowinc
0
1.5k
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
2
770
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
0
130
FASTでAIエージェントを作りまくろう!
yukiogawa
4
110
モジュラモノリス導入から4年間の総括:アーキテクチャと組織の相互作用について / Architecture and Organizational Interaction
nazonohito51
7
4.1k
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
350
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
120
Change Calendarで今はOK?を仕組みにする
tommy0124
1
120
非同期・イベント駆動処理の分散トレーシングの繋げ方
ichikawaken
1
140
Sansanの認証基盤を支えるアーキテクチャとその振り返り
sansantech
PRO
1
100
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
180
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Prompt Engineering for Job Search
mfonobong
0
230
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
160
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
200
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
リリースを支える負荷試験 2020.1.14 藤田 貴大
自己紹介 • 藤田 貴大 @takfjt • WFS サーバエンジニア • (前職)組み込み
→ (転職)インフラ → Webゲーム → QA → WFSサーバ
開発体制について
開発体制 インフラチーム サーバチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム
サーバチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム プロダクトチーム 担当としてプロダクトチームの中で開発 私は全体のサポート
プロダクトチーム プロダクトチーム プロダクトチーム インフラチーム インフラチーム プロダクトチーム プロダクトチーム プロダクトチーム プラットフォーム (GCP,
AWS) ミドルウェア (K8s, MySQL, etc…) モニタリング (Grafana, sumologic, etc…)
今回の話
なぜ、負荷試験?
ゲームはリリースが大切 •スケジュールは入念に計画されている •CM、広告、生放送、etc... •原作があるものであれば、テレビ放映や 映画上映にタイミングをあわせることも
サーバエンジニアが 最も恐れること
リリース後 即メンテ
どれくらい止まるのか •サーバ追加 ⇒ 数時間 •バグ修正 ⇒ 数時間〜数日 •けっこう根本的な見直し ⇒ 数週間
•イチから書き直し ⇒ 数ヶ月?
負荷対策は必須
どういう対策をする?
zܭଌ͢͠ɻܭଌ͢Δ·Ͱ ͷͨΊͷௐΛͯ͠ͳΒͳ͍z 3PC1JLF http://www.lysator.liu.se/c/pikestyle.html 邦訳参照 https://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6
ということで計測 ↓ 負荷試験
確認したいこと • 想定した負荷をかけて問題無く動作すること • 過大な負荷をかけたとき、まずどこがボトル ネックになるのかが明らかになること • 想定より負荷が高いAPIがないか確認すること
想定した負荷
ユーザの量と行動を 想定した負荷
ユーザの量 • プロダクトに試算してもらう • 過去の経験
ユーザの行動 • 実際にプレイしたAPIアクセスと リクエスト、レスポンスの情報を準備して貰う • インタビューして、だいたいの動作を想定する • 最終的には、簡易的にゲームアプリ相当の 処理を実装することになる(つらい)
負荷試験ツール • 既存のツールを使う(Locust) • 自分で作る • 要求すること • dockerイメージを作ってKubernetesで運用 •
WorkerからMasterに接続
Master Worker Worker Worker Worker Worker Worker Kubernetes + Workerから接続
Worker Worker Worker • 環境構築が簡単 • 台数が多いと費用もかかる • ReplicaSetだけでWorkerの 数を制御できる • Masterへの接続は名前解決に任せ られる
Kubernetes • 負荷試験では必需品 • 本番のゲームサーバもKubernetesを使っています • 今後も利用する予定です • Kubernetesによる運用は現在進行形で 経験値を蓄積中です
実施
負荷試験環境 • 本番相当の環境 • リリース前の本番環境をつかっています • タイミングによっては、そのまま本番投入 • 本番相当のモニタリングが必須
MySQL Redis Memcached ゲームサーバ モニタリング 負荷計測ツール Master Workers 構成図
負荷試験ツール モニタリング (CPU) 試験中画面の例
やってみると
次々と現れるボトルネックや不具合 ちょっとの負荷で落ちるAPIサーバ 飽和するMemcached 失敗する名前解決 Bad Gateway 何故か偏るDB負荷 跳ね上がるログの量
地道に解決 • ちょっとの負荷で落ちるAPIサーバ → Dockerコンテナ内の設定漏れ • 飽和するMemcached → サーバ追加 •
失敗する名前解決 → DNSキャッシュサーバを設置
地道に解決 • Bad Gateway → ロードバランサとAPIサーバの KeepAlive設定のミス • 何故か偏るDB負荷 →
負荷試験ツールのバグ • 跳ね上がるログの量 → 開発モードの状態で大量のデバッグログを 出している状態で、本番相当の負荷を かけてしまった
その他 • モニタリングの調整なども同時進行で実施 • 数値がおかしい • こういうグラフが欲しいなど • インフラチームと連携 •
想定以上の負荷が発生したとき DBのレイテンシが悪化することを確認
負荷試験ビフォーアフター ビフォー アフター トラフィック
結果
無事リリース🎉 (海外配信を含む)
まとめ • 負荷試験を実施した • リリース後の負荷に関する問題はゼロ • Kubernetesを活用している • プロダクトチーム、インフラチームとの 連携でやっている