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
コロプラにおけるLaunch Coordination Engineeringの取り組み / ...
Search
halnique
December 03, 2021
Technology
0
1k
コロプラにおけるLaunch Coordination Engineeringの取り組み / colopl-launch-coordination-engineering
Cloud Native Lounge #3「Kubernetesで実現する大規模サービス基盤運用」
登壇資料
halnique
December 03, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
100
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Platform Engineering for Software Developers and Architects
syntasso
1
520
SSMRunbook作成の勘所_20241120
koichiotomo
3
160
AGIについてChatGPTに聞いてみた
blueb
0
130
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
890
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
170
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
A Modern Web Designer's Workflow
chriscoyier
693
190k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Rails Girls Zürich Keynote
gr2m
94
13k
Building Applications with DynamoDB
mza
90
6.1k
BBQ
matthewcrist
85
9.3k
Transcript
コロプラにおける Launch Coordination Engineeringの取り組み
• @halnique • 株式会社コロプラ サーバー基盤グループ LCEチーム • 2020/2 入社 自己紹介
• k8sそのものの話はあまり多くありません(できません) • スマートフォンゲームのバックエンドシステムなので、一般的なWebアプリ ケーションとは異なる点がある場合があります 諸注意
内容
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
LCEってなんですか? Launch Coordination Engineering ローンチ調整エンジニアリング
LCEってなんですか? Launch Coordination Engineering ローンチ調整エンジニアリング
LCEってなんですか? Site Reliability Engineering / Chapter 27 - Reliable Product
Launches at Scale https://sre.google/sre-book/reliable-product-launches/
LCEってなんですか? SRE
LCEってなんですか? SRE LCE
• プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う •
開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う LCEってなんですか? Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
コロプラでLCEが必要な理由
コロプラでLCEが必要な理由 ゲームたくさん作って たくさんリリースしたい!
コロプラでLCEが必要な理由 完成した!リリースだ
コロプラでLCEが必要な理由 お、コロプラの新作出てるんだ やってみるか
コロプラでLCEが必要な理由 サーバーのようすが…?
コロプラでLCEが必要な理由 緊急 メンテナンス!
コロプラでLCEが必要な理由 …やらなくていいか
Q: いくつもゲーム出してるんだから、落ちないためのノウハウあるでしょ? A: それがなかなか難しいんです… • ローンチに携わった経験のある人が多くない • ローンチ時に最大トラフィックが来るようなマーケティング • ビッグバンリリース
• ゲームによって異なるアーキテクチャ、アクセスパターンや負荷の特性 • ローンチ直前までクオリティアップの開発が行われていることもあり、ローンチそのものの準備に 開発の工数を割きづらい • 大規模ゲームの運用経験がない場合、負荷的な観点で開発をするのが難しいことも コロプラでLCEが必要な理由
Q: いくつもゲーム出してるんだから、落ちないためのノウハウあるでしょ? A: それがなかなか難しいんです… • ローンチに携わった経験のある人が多くない • ローンチ時に最大トラフィックが来るようなマーケティング • ビッグバンリリース
• ゲームによって異なるアーキテクチャ、アクセスパターンや負荷の特性 • ローンチ直前までクオリティアップの開発が行われていることもあり、ローンチそのものの準備に 開発の工数を割きづらい • 大規模ゲームの運用経験がない場合、負荷的な観点で開発をするのが難しいことも コロプラでLCEが必要な理由
• 開発期間の長期化もあり、ローンチの期間が空きがち • ゲームに使われるインフラなど技術スタックの更新 • ローンチが近づくとアサインされるローンチ請負人的な人もいたが、その人 個人の負荷が高い&スケールしづらい コロプラでLCEが必要な理由 ローンチに関するノウハウの断片化
• 開発期間の長期化もあり、ローンチの期間が空きがち • ゲームに使われるインフラなど技術スタックの更新 • ローンチが近づくとアサインされるローンチ請負人的な人もいたが、その人 個人の負荷が高い&スケールしづらい コロプラでLCEが必要な理由 ローンチに関するノウハウの断片化
• 個人ではなく、ローンチ請負チームがあればよいのでは? • 調べてみるとGoogleでも似たような取り組みをしているようだ コロプラでLCEが必要な理由 コロプラLCEの発足
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
• LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容
コロプラのLCEの業務とk8s • プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う
• 開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
コロプラのLCEの業務とk8s • プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う
• 開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
コロプラのLCEの業務とk8s 負荷試験
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
• ユーザーがどういう行動をするか把握 • ユーザーあたりのRPSを測定 コロプラのLCEの業務とk8s
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s • Golangの自作負荷試験ツール
Q: なんで自作? A: より実際のクライアントに近づけたい • リトライなどエラーハンドリングを柔軟に制御したい • 複雑な行動パターンもシナリオとして表現したい • クライアントのメトリクスも収集して可視化したい
コロプラのLCEの業務とk8s
コロプラのLCEの業務とk8s Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること [Google Cloud INSIDE Games
& Apps] / SREの取り組み https://www.slideshare.net/GoogleCloudPlatformJP/spanner-gkespinnaker-sre-google-cloud-insid e-games-apps
コロプラのLCEの業務とk8s 開発チーム LCE SRE ローンチ
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s Google Kubernetes Engine Google Cloud Spanner
コロプラのLCEの業務とk8s
コロプラのLCEの業務とk8s
コロプラのLCEの業務とk8s • Application Cluster ◦ Application (PHP) Pods ◦ etc
• Testing Tools Cluster ◦ Scenario Runner (Golang) Job ◦ Spanner Warm-Up Tools (Golang) Job/Deployment ◦ etc
コロプラのLCEの業務とk8s • Application Cluster ◦ Application (PHP) Pods ◦ etc
• Testing Tools Cluster ◦ Scenario Runner (Golang) Job ◦ Spanner Warm-Up Tools (Golang) Job/Deployment ◦ etc
コロプラのLCEの業務とk8s • Golang • Helm charts • GitLab CI build
manifest → Google Cloud Storage • Spinnaker deploy manifest
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s • Spanner Nodes x1 (Processing units x1000) • Application
HPA min:1 ~ • Scenario users 1,000 ~ Spanner 1 nodeを基準として処理できるユーザー数や周辺の必要リソースを見積 もる 明らかにパフォーマンスが良くない箇所を確認・修正
コロプラのLCEの業務とk8s Hot spot Warming up Session Split Mutation Stale /
Strong read
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s N users (Spanner 1 node) Target users (Spanner X
node)
コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.
リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
コロプラのLCEの業務とk8s ゲーム データベースとして Cloud Spanner を使用する場合のベスト プラクティス https://cloud.google.com/architecture/best-practices-cloud-spanner-gaming-database
• リリース2日前 ◦ Spanner Warm-up • リリース1日前 ◦ Scale-out ◦
Testing ◦ Delete data • リリース当日 ◦ Monitoring • リリース後 ◦ Clean up コロプラのLCEの業務とk8s
まとめ
• ローンチに関わる色んなことをやるのがLCE • コロプラではローンチたくさんしたいけど、サービス落としたくないので LCEチームが立ち上がった • コロプラのLCEはk8sや関連技術を使って、ローンチ前の負荷試験に注力して いる まとめ
以上