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

安全なローンチを支える 負荷試験/ColoplTech-02-01

COLOPL Inc.
February 10, 2023

安全なローンチを支える 負荷試験/ColoplTech-02-01

※資料内の参照リンクを選択し閲覧する場合は、ダウンロードをお願いいたします

\積極的に技術発信を行なっております/
▽ Twitter/COLOPL_Tech
https://twitter.com/colopl_tech

▽ connpassページ
http://colopl.connpass.com

▽ COLOPL Tech Blog
http://blog.colopl.dev

COLOPL Inc.

February 10, 2023
Tweet

More Decks by COLOPL Inc.

Other Decks in Technology

Transcript

  1. 2 • 新作ゲームのローンチ前開発サポート • 共通で利用する社内ライブラリの開発・保守 氏名  : 部署名 : ごましお

    @halnique 技術基盤本部 第2バックエンドエンジニア部 サーバー基盤グループ LCEチーム 自己紹介
  2. 試験の流れ 5 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  3. 試験の流れ 6 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  4. 試験の流れ 8 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 想定の最大負荷をかけた状態で試験基準を満た すまで規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  5. Q. なんで自前で作ってるんですか? A. 独自の要件に合わせやすいから • API呼び出しコードを定義ファイルから自動生成 • パラメータで負荷をシミュレート可能 • リトライ戦略など細かいカスタマイズ

    • リアルタイムゲームサーバーとの接続 • クライアントのメトリクスをPrometheusに連携 • GKE環境にデプロイ可能 12 2. 試験クライアントを実装する
  6. 試験の流れ 17 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  7. 試験の流れ 19 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  8. 21

  9. 22

  10. 試験の流れ 23 1. ゲームをプレイしてログを収集する 2. 試験クライアントを実装する 3. 複数人のプレイログを収集する 4. 試験を実施する

    5. 試験結果を評価する 6. 規模を増やしながら4-5を繰り返す 7. [番外] データベースのウォームアップ
  11. Monitoring • gcp services Prometheus • application • gamebot •

    gke resources 24 5. 試験結果を評価する BigQuery • application logs Grafana
  12. 試験条件 適切な負荷がかけられているかどうか 25 5. 試験結果を評価する RPS (同時接続数 x 1ユーザーあた りRPS)

    を超える APIカバー率 基本的に100% アクセス傾向 プレイログ収集時と近い 継続時間 ピーク状態で n 時間以上 入会速度 想定入会速度を超える ステータス (リトライ含め)最終的に全て2xx 系 レイテンシ 50/90/99/99.9 など各テール レイテンシがそれぞれ n 秒以内 プレイ感 通常時と高負荷時でゲームのプ レイ感に影響がない 評価項目 品質として問題ないか (ゲームによる)
  13. スケールイン/スケールアウトをパイプライン化しておくと便利 • gke cluster ◦ Temporal • hpa (horizontal pod

    autoscaler) • spanner nodes (processing units) 使うときに使う分だけ! 30 6. 規模を増やしながら4-5を繰り返す
  14. spanner-warmer • INSERT / SELECT で負荷をかけつ つデータを投入する dankichi • spanner-warmerのPod数をコント

    ロールして実行する • spannerの負荷をモニタリングし ながらspanner-warmerの規模を 調節する 36 7. [番外] データベースのウォームアップ
  15. 37 2022年はSpannerのチューニングに関する公式情報もかなり増えた • Cloud Spanner のウォームアップ ツールとベンチマーク ツールでアプリケーションのリリースを簡 単に [Google

    Cloud 公式ブログ] • ツールを使った Cloud Spanner のウォームアップ [michityさん@Google Cloud Japan Customer Engineer] • Cloud Spanner 向け Query Insights のご紹介: 事前構築されたダッシュボードでパフォーマンス問 題のトラブルシューティングを行う [Google Cloud 公式ブログ] • Introducing lock insights and transaction insights for Spanner: troubleshoot lock contentions with pre-built dashboards [Google Cloud 公式ブログ] • A deep dive into Spanner’s query optimizer [Google Cloud 公式ブログ] 7. [番外] データベースのウォームアップ
  16. コロプラではLaravelからSpannerを利用するためのドライバ colopl/laravel-spanner を公開しています PHP >= 8, Laravel >= 9 対応

    フィードバックお待ちしております 38 7. [番外] データベースのウォームアップ