773 views
1

コンテナをゲームインフラに実践投入した話(1)

コンテナをゲームインフラに実践投入した話(1)

この記事の概要

  • 自社ゲームアプリでコンテナを試用はGCP
  • 大手ゲームパブリッシャー受託開発案件でのコンテナ導入の項はGCPではなく国内クラウド業者での事例となります。

の2点をイベントにてお話した時の概要と流れの解説、および振り返りとなります。

トップゲート主催のイベント
酒とゲームとインフラとGCP 第3回
にて登壇した内容と同一のものです。

それなりに長い内容なので、複数回に分けての投稿となりそうです.

自社ゲームアプリでの試用

当初、落としきりのゲームとして開発していましたので、サーバー対応が必要な部分はほとんどありませんでしたが、

補填などの対応やユーザーのデータ調査のためにある程度は必要だろうということと、

自社R&Dのゲームということで、サーバー側もR&Dとしてトライするということでdockerコンテナを使用してみました。

Image
LostNia Five Stars Game Inc.

サーバーで管理しているデータは次の通り。

  • 課金履歴
  • レシートの検証
  • ユーザーサポートのための補填データ(いわゆるプレゼントボックスにあたるもの)

アプリの性質からアクセス数、頻度ともにそれほど多くないだろうということが予想できましたので構成は以下のようにシンプルにしました。

コンテナの管理はdocker-compose

シングルホスト構成が中心になっていますので、こちらはdocker-composeを使用して、サクッと構築してあります。

StructureText

StructureImage

docker-composeに関しては、割とハマりポイントも少なく、関連記事はググればすぐに見つかると思いますので、詳しい設定は割愛してありますが、構成は上記の通りとなっています。

シンプルではありますが、何が起こるかわかりませんので、MySQLのデータのバックアップだけはしっかり行うようにしました。

GCPを使っていましたので、そのままCloudStorageへアップロードしています。

あまり頑張らずに対応したBlue-Green-Deploy(っぽいもの)

Appコンテナのデプロイの手順は大まかに説明すると、こんな感じになります。

Sample

設定ファイルはざっくりとこんな感じ
Settings

ポート3001で待ち受けるAppコンテナを新たに立ち上げます。

立ち上がったら、ポート3001(rails_green)に一旦トラフィックを切り替えます。
(これはnginxのコンフィグを書き換えてリロードしています)

次にポート3000にあたるrails_blueコンテナを落とし、新しくしたものを起動します。

ポート3000のコンテナの再起動が完了したあと、nginxのコンフィグを元の3000に通していた設定に戻し、リロードします。

ポート3001(rails_green)をシャットダウンします

Blue/Greenを交互に切り替える、ポートをインクリメントしていくなどの方式もありますが、どちらも、その状態を管理する必要が出てくるので、3000>3001>3000と戻すことでこの管理をせずに済むようにしてあります。

MySQLもコンテナ化

こちらは、MySQLサーバーが入ったコンテナとbusyboxでリンクしたデータコンテナとのセットで構築しました。

MysqlContainer

MySQLサーバーコンテナは、my.cnfを設定したものをビルドしてコンテナイメージです。

busyboxコンテナはmysqlのdatadirの保存先として使用し、このコンテナはMySQLサーバーコンテナからボリュームとしてアタッチされます。

バックアップの時は、busyboxの中にあるdatadirを丸ごと固めて、ホストOSに保存し、それをCloud Storageに転送しています。
busyboxをデータコンテナとして使用する理由は2つあって、

仮にMySQLサーバーコンテナがダウンした時に、一緒にdatadirの中身も失われてしまうリスクを避けるため

ホストOSの環境を汚さないという点

という点ですね。

結果

LostNiaでは大体こんな感じで、docker-composeを使用してサクッとコンテナ化し、特に問題もなく安定稼働している状況です。

docker-composeは導入が非常に簡単なので、
あまりつまづかずにすんなり導入できると思います。

興味があったらdocker-composeからコンテナを導入していくのもアリだと思います。

次回

Kubernetesを使わないでガチで構築したコンテナベースのインフラの構築「大手ゲームパブリッシャー受託開発案件でのコンテナ導入」のお話です。

続きはこちら

シェアする

プロフィール

たみ Lv 34

サーバーエンジニア的な

HP : 384 /65535

SP : 256 /32768

新技術を積極的に実戦投入していくエンジニア。
ライフワークは育児とインディープロジェクトの企画・開発・販売。

▼ おすすめ記事

  • クリエイティブ・オブ・ゴッド

    UE4がswitchに正式対応発表!

  • スキルマ神殿

    (初級編)ゲーム業界に転職したい方への「3つのアドバイス」

  • 伝説のコンシェルジュ

    アグ兎のゲーム日記 第2回

  • 開発の謎

    Unity(Mac版) + Spotify = クラッシュ