GS2-Freeze
GS2-Freeze は、ゲームから利用する GS2 のマイクロサービスのバージョンを任意のタイミングで固定 (freeze) し、運営側が管理するタイミングでバージョンを更新できるようにするための機能です。
通常、GS2 のマイクロサービスは継続的にバージョンアップが行われ、ゲームは常に最新のバージョンの API を利用することになります。 多くのタイトルではこの運用で問題ありませんが、リリース直後の大規模タイトルや、長期にわたって安定性を最優先したい局面では、サービス側の更新タイミングをゲーム運営側でコントロールしたいというニーズが存在します。 GS2-Freeze はこのようなニーズに応えるための、エンタープライズ向けの機能です。
Tip
GS2-Freeze はエンタープライズ向けの機能で、すべてのお客様に対して広範囲に提供される機能ではありません。 利用をご希望の場合はサポートまでお問い合わせください。ステージ
GS2-Freeze の中心となる概念が「ステージ (Stage)」です。 ステージは「特定の時点で固定された GS2 マイクロサービスのバージョンの集合」を表します。
各ステージには以下の情報が紐付きます。
- ステージ名 (name): ステージを一意に識別する名前
- ソースステージ名 (sourceStageName): バージョン情報の取得元となるステージの名前
- ソート順 (sortNumber): 開発・検証・本番といったステージの並び順を表す番号
- ステータス (status): ステージの状態 (プロモート中、ロールバック中など)
ゲームのクライアント・サーバーは、利用したいステージを指定してGS2のAPIを呼び出すことで、そのステージに固定されたバージョンのマイクロサービスを利用できます。
graph LR Latest["最新の GS2 マイクロサービス"] -- Promote --> StageDev["Stage: dev"] StageDev -- Promote --> StageStg["Stage: staging"] StageStg -- Promote --> StageProd["Stage: production"] Game["ゲームクライアント"] -- API リクエスト --> StageProd
プロモート / ロールバック
ステージのバージョンを更新する操作を「プロモート (Promote)」と呼びます。 プロモートを実行すると、ソースステージに固定されているバージョンが、対象のステージにコピーされます。 たとえば「staging ステージのバージョンを production ステージへプロモートする」ことで、検証済みのバージョンを本番に反映できます。
プロモート後に問題が発覚した場合は、「ロールバック (Rollback)」を実行して直前のバージョンに戻すことが可能です。
プロモート・ロールバックは時間のかかる処理になることがあり、内部的には非同期処理として実行されます。 処理の途中経過は Output として記録され、状態を後から確認できます。
ステージのソート順
sortNumber を利用することで、複数のステージを「開発」「ステージング」「本番」のような階層として並べることができます。
ソート順はマネージメントコンソール上の表示順や、プロモート対象を選択する際の参考情報として用いられます。
トランザクションアクション
GS2-Freeze ではトランザクションアクションを提供していません。
マスターデータ管理
GS2-Freeze はステージ自体が運用上の構成情報であり、一般的なマイクロサービスにあるような「マスターデータのインポート / エクスポート」は提供していません。 ステージの作成・更新・削除はマネージメントコンソールや GS2-Deploy から行います。
実装例
GS2-Freeze は管理API中心のマイクロサービスです。ゲームエンジン用 SDK (Unity/Unreal Engine) には専用の Domain クラスが提供されていません。
ステージの作成・プロモート・ロールバックといった操作は、ゲームクライアントから直接呼び出すのではなく、以下のいずれかの手段で操作することを推奨します。
- マネジメントコンソール
- GS2 CLI
- 各種言語向け一般SDK (C# / Go / Python / TypeScript / PHP / Java)
- GS2-Deploy によるテンプレート管理
各種SDKの詳細は対応するリファレンスページを参照してください。
より実践的な情報
開発・検証・本番の3段ステージ運用
代表的な利用パターンは、開発用・検証用・本番用の3つのステージを用意し、左から右へ順番にプロモートしていく運用です。
- 開発ステージ (dev): 最新のGS2マイクロサービスを利用し、新機能の動作確認を行う
- 検証ステージ (staging): 開発ステージで検証が済んだバージョンをプロモートし、QAやリハーサルを行う
- 本番ステージ (production): 検証ステージで品質を確認したのちにプロモートし、ゲームプレイヤーに提供する
この運用により、GS2 側で新しいリリースが行われても、ゲーム運営側が望むタイミングでのみ本番反映を行うことができます。
問題発生時の即時ロールバック
本番ステージにプロモートしたあとに不具合が見つかった場合は、ロールバックを実行することで直前のバージョンに即座に戻すことができます。 ゲーム側に変更を加えずにサービス側のバージョンだけを差し戻せるため、緊急対応の選択肢として有用です。