Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コロプラにおけるLaunch Coordination Engineeringの取り組み / ...
Search
halnique
December 03, 2021
Technology
0
1.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
Kubernetes だけじゃない!Amazon ECS で実現するクラウドネイティブな GitHub Actions セルフホストランナー / CNDW2024
ponkio_o
PRO
6
430
AWS re:Invent 2024登壇資料(GBL206-JA: Unleashing the power of generative AI on AWS for your business)
minorun365
PRO
4
150
Entra ID の基礎(Japan Microsoft 365 コミュニティ カンファレンス 2024)
murachiakira
3
2.3k
A/Aテストにおけるサンプルサイズ/japanr2024
nikkei_engineer_recruiting
1
370
Raspberry Pi 秋の新製品をチェックしてみよう / 20231202-rpi-jam-tokyo
akkiesoft
0
340
GeminiとUnityで実現するインタラクティブアート
hokkey621
0
540
開志専門職大学特別講義 2024 オープニング
1ftseabass
PRO
0
220
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
2
280
Explain EXPLAIN
keiko713
9
2.3k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
430
My Generation 年配者がこの先生きのこるには (Developers CAREER Boost 2024 Edition)/My Generation How elder engineers can survive
kwappa
3
110
乗っ取れKubernetes!!~リスクから学ぶKubernetesセキュリティの考え方~/k8s-risk-and-security
mochizuki875
3
450
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
The Language of Interfaces
destraynor
154
24k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
What's in a price? How to price your products and services
michaelherold
243
12k
Building Your Own Lightsaber
phodgson
103
6.1k
Side Projects
sachag
452
42k
Rails Girls Zürich Keynote
gr2m
94
13k
BBQ
matthewcrist
85
9.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Documentation Writing (for coders)
carmenintech
65
4.5k
Scaling GitHub
holman
458
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
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や関連技術を使って、ローンチ前の負荷試験に注力して いる まとめ
以上