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
1.3k
0
Share
コロプラにおけるLaunch Coordination Engineeringの取り組み / colopl-launch-coordination-engineering
Cloud Native Lounge #3「Kubernetesで実現する大規模サービス基盤運用」
登壇資料
halnique
December 03, 2021
Other Decks in Technology
See All in Technology
自己組織化を試される緑茶ハイを求めて、今日も全力であそんで学ぼう / Self-Organization and Shochu Green Tea
naitosatoshi
0
330
DevOpsDays2026 Tokyo Cross-border practices to connect "safety" and "DX" in healthcare
hokkai7go
0
120
DIPS2.0データに基づく森林管理における無人航空機の利用状況
naokimuroki
0
190
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
1
170
2026年春から始めるOpenTelemetry | sogaoh's LT @ PHP Conference ODAWARA 2026
sogaoh
PRO
0
100
プロジェクトマネジメントは AIでどう変わるか?
mkg5383
0
180
CC Workflow Studio
seiyakobayashi
0
270
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.2k
ある製造業の会社全体のAI化に1エンジニアが挑んだ話
kitami
2
820
あるアーキテクチャ決定と その結果/architecture-decision-and-its-result
hanhan1978
2
570
ストライクウィッチーズ2期6話のエイラの行動が許せないのでPjMの観点から何をすべきだったのかを考える
ichimichi
1
320
NOSTR, réseau social et espace de liberté décentralisé
rlifchitz
0
150
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
410
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Building the Perfect Custom Keyboard
takai
2
720
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
200
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
KATA
mclloyd
PRO
35
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
We Are The Robots
honzajavorek
0
210
Raft: Consensus for Rubyists
vanstee
141
7.4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
310
Color Theory Basics | Prateek | Gurzu
gurzu
0
280
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や関連技術を使って、ローンチ前の負荷試験に注力して いる まとめ
以上