Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コロプラにおけるLaunch Coordination Engineeringの取り組み / colopl-launch-coordination-engineering

72f9d96ed7963cc799a3d2f967f31823?s=47 halnique
December 03, 2021

コロプラにおけるLaunch Coordination Engineeringの取り組み / colopl-launch-coordination-engineering

Cloud Native Lounge #3「Kubernetesで実現する大規模サービス基盤運用」
登壇資料

72f9d96ed7963cc799a3d2f967f31823?s=128

halnique

December 03, 2021
Tweet

Other Decks in Technology

Transcript

  1. コロプラにおける Launch Coordination Engineeringの取り組み

  2. • @halnique • 株式会社コロプラ サーバー基盤グループ LCEチーム • 2020/2 入社 自己紹介

  3. • k8sそのものの話はあまり多くありません(できません) • スマートフォンゲームのバックエンドシステムなので、一般的なWebアプリ ケーションとは異なる点がある場合があります 諸注意

  4. 内容

  5. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  6. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  7. LCEってなんですか? Launch Coordination Engineering ローンチ調整エンジニアリング

  8. LCEってなんですか? Launch Coordination Engineering ローンチ調整エンジニアリング

  9. LCEってなんですか? Site Reliability Engineering / Chapter 27 - Reliable Product

    Launches at Scale https://sre.google/sre-book/reliable-product-launches/
  10. LCEってなんですか? SRE

  11. LCEってなんですか? SRE LCE

  12. • プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う •

    開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う LCEってなんですか? Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
  13. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  14. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  15. コロプラでLCEが必要な理由

  16. コロプラでLCEが必要な理由 ゲームたくさん作って たくさんリリースしたい!

  17. コロプラでLCEが必要な理由 完成した!リリースだ

  18. コロプラでLCEが必要な理由 お、コロプラの新作出てるんだ やってみるか

  19. コロプラでLCEが必要な理由 サーバーのようすが…?

  20. コロプラでLCEが必要な理由 緊急 メンテナンス!

  21. コロプラでLCEが必要な理由 …やらなくていいか

  22. Q: いくつもゲーム出してるんだから、落ちないためのノウハウあるでしょ? A: それがなかなか難しいんです… • ローンチに携わった経験のある人が多くない • ローンチ時に最大トラフィックが来るようなマーケティング • ビッグバンリリース

    • ゲームによって異なるアーキテクチャ、アクセスパターンや負荷の特性 • ローンチ直前までクオリティアップの開発が行われていることもあり、ローンチそのものの準備に 開発の工数を割きづらい • 大規模ゲームの運用経験がない場合、負荷的な観点で開発をするのが難しいことも コロプラでLCEが必要な理由
  23. Q: いくつもゲーム出してるんだから、落ちないためのノウハウあるでしょ? A: それがなかなか難しいんです… • ローンチに携わった経験のある人が多くない • ローンチ時に最大トラフィックが来るようなマーケティング • ビッグバンリリース

    • ゲームによって異なるアーキテクチャ、アクセスパターンや負荷の特性 • ローンチ直前までクオリティアップの開発が行われていることもあり、ローンチそのものの準備に 開発の工数を割きづらい • 大規模ゲームの運用経験がない場合、負荷的な観点で開発をするのが難しいことも コロプラでLCEが必要な理由
  24. • 開発期間の長期化もあり、ローンチの期間が空きがち • ゲームに使われるインフラなど技術スタックの更新 • ローンチが近づくとアサインされるローンチ請負人的な人もいたが、その人 個人の負荷が高い&スケールしづらい コロプラでLCEが必要な理由 ローンチに関するノウハウの断片化

  25. • 開発期間の長期化もあり、ローンチの期間が空きがち • ゲームに使われるインフラなど技術スタックの更新 • ローンチが近づくとアサインされるローンチ請負人的な人もいたが、その人 個人の負荷が高い&スケールしづらい コロプラでLCEが必要な理由 ローンチに関するノウハウの断片化

  26. • 個人ではなく、ローンチ請負チームがあればよいのでは? • 調べてみるとGoogleでも似たような取り組みをしているようだ コロプラでLCEが必要な理由 コロプラLCEの発足

  27. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  28. • LCEってなんですか? • コロプラでLCEが必要な理由 • コロプラのLCEの業務とk8s 内容

  29. コロプラのLCEの業務とk8s • プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う

    • 開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
  30. コロプラのLCEの業務とk8s • プロダクトやサービスがGoogleの信頼性の基準とベストプラクティスに沿っ ているかを監査し、信頼性を高めるための具体的なアクションを提供する • ローンチに関わる複数のチーム間の連絡役として働く • タスクが滞り無く進んでいることを確認し、技術面からローンチを推進する • 門番の役目を果たし、ローンチが「安全」だという判断の承認を行う

    • 開発者の学習速度を高めるために内部ドキュメントやトレーニング用のリ ソースを用意し、開発者に対してベストプラクティスやGoogleのサービスと 統合する方法についての教育を行う Site Reliability Engineering / Chapter 27 - Reliable Product Launches at Scale https://sre.google/sre-book/reliable-product-launches/
  31. コロプラのLCEの業務とk8s 負荷試験

  32. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  33. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  34. • ユーザーがどういう行動をするか把握 • ユーザーあたりのRPSを測定 コロプラのLCEの業務とk8s

  35. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  36. コロプラのLCEの業務とk8s • Golangの自作負荷試験ツール

  37. Q: なんで自作? A: より実際のクライアントに近づけたい • リトライなどエラーハンドリングを柔軟に制御したい • 複雑な行動パターンもシナリオとして表現したい • クライアントのメトリクスも収集して可視化したい

    コロプラのLCEの業務とk8s
  38. コロプラの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
  39. コロプラのLCEの業務とk8s 開発チーム LCE SRE ローンチ

  40. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  41. コロプラのLCEの業務とk8s Google Kubernetes Engine Google Cloud Spanner

  42. コロプラのLCEの業務とk8s

  43. コロプラのLCEの業務とk8s

  44. コロプラのLCEの業務とk8s • Application Cluster ◦ Application (PHP) Pods ◦ etc

    • Testing Tools Cluster ◦ Scenario Runner (Golang) Job ◦ Spanner Warm-Up Tools (Golang) Job/Deployment ◦ etc
  45. コロプラのLCEの業務とk8s • Application Cluster ◦ Application (PHP) Pods ◦ etc

    • Testing Tools Cluster ◦ Scenario Runner (Golang) Job ◦ Spanner Warm-Up Tools (Golang) Job/Deployment ◦ etc
  46. コロプラのLCEの業務とk8s • Golang • Helm charts • GitLab CI build

    manifest → Google Cloud Storage • Spinnaker deploy manifest
  47. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  48. コロプラのLCEの業務とk8s • Spanner Nodes x1 (Processing units x1000) • Application

    HPA min:1 ~ • Scenario users 1,000 ~ Spanner 1 nodeを基準として処理できるユーザー数や周辺の必要リソースを見積 もる 明らかにパフォーマンスが良くない箇所を確認・修正
  49. コロプラのLCEの業務とk8s Hot spot Warming up Session Split Mutation Stale /

    Strong read
  50. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  51. コロプラのLCEの業務とk8s N users (Spanner 1 node) Target users (Spanner X

    node)
  52. コロプラのLCEの業務とk8s 1. 実際にゲームをプレイ a. ユーザーの行動(アクセスパターン)を把握 b. ゲーム上重要な/特殊な仕様を把握 2. 負荷をかけるシナリオを検討・作成 a.

    リトライ戦略などゲームの実装も合わせて確認 3. 負荷試験に使う環境を構築 a. 負荷をかける側の環境も合わせて構築 b. DBのウォームアップ環境も兼ねる 4. ミニマムな規模から負荷試験を実施 a. リソースあたり処理できるユーザー数を見積もる 5. 想定の最大規模までスケールしながら実施 6. リリース 3~6 ヶ 月
  53. コロプラのLCEの業務とk8s ゲーム データベースとして Cloud Spanner を使用する場合のベスト プラクティス https://cloud.google.com/architecture/best-practices-cloud-spanner-gaming-database

  54. • リリース2日前 ◦ Spanner Warm-up • リリース1日前 ◦ Scale-out ◦

    Testing ◦ Delete data • リリース当日 ◦ Monitoring • リリース後 ◦ Clean up コロプラのLCEの業務とk8s
  55. まとめ

  56. • ローンチに関わる色んなことをやるのがLCE • コロプラではローンチたくさんしたいけど、サービス落としたくないので LCEチームが立ち上がった • コロプラのLCEはk8sや関連技術を使って、ローンチ前の負荷試験に注力して いる まとめ

  57. 以上