「第7回 Google Cloud INSIDE Games & Apps」セッションレポート #gc_inside

「第7回 Google Cloud INSIDE Games & Apps」に参加してきました!

4/18(木)にベルサール渋谷ファーストで開催された「第7回 Google Cloud INSIDE Games & Apps」に参加させていただきました。

Google Cloud では 2019 年 4 月 18 日(木)、ゲーム業界で活躍するインフラエンジニア、サーバーアプリケーションエンジニア、テクニカルリーダーを対象に「第 7 回 Google Cloud INSIDE Games & Apps」を開催します。 業界をリードする方々や、深い専門知識をもつ Googler をゲストスピーカーに迎え、注目のゲームの裏側や、Google Cloud Platform を中心としたテクノロジーアップデートをお届けします。

本記事はそのセッションレポートです。

レポート

ご挨拶

  • 3〜4年前は日本リージョンがない時代
  • Google Cloud Nextもあったが、今回はゲームに特化
  • ゲームのトレンド
    • ゲームタイトルの数が減っている
    • フォートナイトStadiaなどのクラウドゲーミングが起爆剤
    • 開発の規模が大きくなると生産性の改善が必要
      • 開発生産性について、GCPで美味しい形で提供できるよう考えている
  • 今回はグローバルなタイトルのお話やGoogle Cloud Nextのキャッチアップができるようにしている

GCP & Gaming 〜平成最後のアップデート〜

  • スピーカー : サミール ハムディ 氏(Google Cloud ゲームテクニカルスペシャリスト)

4 月 9 日から 11 日まで、サンフランシスコ(US)で開催する大規模イベント「Google Cloud Next '19」でアナウンスされる最新の GCP アップデートのまとめと共に、平成最終月の GCP & Gaming のホットトピックを共有します。

  • Infrastructure
    • 新リージョン
      • ソウル、ソルトレイクシティ、大阪、ジャカルタ
    • ネットワーク
      • Network Service Tier(GA)
      • High Availability VPN(Beta)(SLA 99.99%を予定)
      • 100 GBps(Beta)
      • Traffic Director(Beta)
    • VMファミリー
      • Compute Optimized VMs
        • ゲームのマルチプレイに最適
      • Memory Optimized VMs
    • オープンソースのエコシステムとの統合
      • Redis, Elasticache, mongoDBなどをサポート、ビリング、体験をGCPに統合
    • Hybrid done right
      • ソフトウェアベースのスタック(既存のハードを使ってハイブリット環境を構築)
      • OSS上に構築
      • インフラストラクチャの抽象化
      • Cloud Service PlatformがAnthosに
        • ハイブリッド、マルチクラウドを実現するための新しいアプローチ
        • 今後、マルチクラウド(AWS, AsureなどでGKEを使える)をサポート
  • App Innovation
    • 開発者生産性向上
      • Cloud Code for IDEs(VS CodeやIntelliJのプラグインを使ってk8sクラスタをデプロイなど)
      • GitHub and GitLab Integrations(Beta)
      • Shift security left with tooling
    • サーバーレスコンテナ
      • Cloud Run
        • フルマネージド、AppEngineに近い形、Dockerコンテナをサーバーレスで実行
      • Cloud Run on GKE
        • GKE上にデプロイすることで
      • Cloud Functions
        • Python, Go, Node.js 8, Java
      • App Engine
        • PHP, Go, Node.js 10, Java 11, Ruby 2,5
      • Serverless VPC Access
        • GCFやGAEからVPCにアクセスできるように
  • Insight from Data
    • Cloud Data Fusion
      • コーディングなしでオンプレ間のETL
    • SaaS App 向けBigQuery Data Transfer Service
      • SFなどからデータを転送できる
    • Data warehouse migration service(Beta)
    • Connected Sheets(Alpha)
      • SQLなしでスプレッドシートからBigQueryデータを分析
    • BigQuery ML(GA)
    • BigQuery BI Engine(Beta)
      • さらに高速にリアルタイムダッシュボード表示できるように
    • Dataflow Pipelines in SQL(Alpha)
      • ストリーミングのパイプラインを SQLスキルだけで開発できる
    • Data Catalog
      • BigQuery, Pub/Sub, GCSのメタデータを検索
  • ゲームトピック
    • ゲームサーバーをグローバルにスケールする
    • ゲーム向けのグローバルネットワーク
      • 低レイテンシにアクセスできるような専用線を提供
    • スケールするためには3つの選択肢
      • 自前で作る
        • かなりのコーディングが必要!
        • デプロイも大変
      • マネージドパートナー
        • multiplay(Unity配下の企業)などを利用し、マネジメントをお任せする
        • 事例 : APEX Legends(世界的にバズったバトルロイヤルゲーム)
          • 8時間で100万プレイヤーの実績
          • 200万CCU以上、6,500VM、53箇所以上
      • コンテナ化
        • GKEはステートレスに向いている
        • ゲームはプレイ中に落としてはいけない
        • agonesなどのようなOSSを活用していく
        • 事例 : supersolid
          • Snake Rivals(バトルロイヤル、リアルタイムマルチプレイヤーゲーム)
          • agonesを活用

Fireside Chat - ゲーム開発者が期待する Next '19 で発表された " 最新リリース "

  • パネラー
    • 佐藤 良祐 氏(株式会社ミクシィ Site Reliability Engineer)
    • 谷口 直輝 氏(株式会社ディー・エヌ・エー ゲーム・エンターテインメント事業本部 基幹システム部 アライアンスシステムグループ グループリーダー)
    • 舟橋 弘兼 氏(グリー株式会社開発本部 インフラストラクチャ部 ディベロップメントオペレーショングループ マネージャー)
  • モデレーター
    • 須藤 祐哉 氏(Google Cloud シニア アカウント エグゼクティブ)

Next '19で発表された新サービスのゲーム活用をテーマとしたパネルトークセッションです。

  • Google Cloud Next '19について
    • 会場が熱気に包まれてて良い会場だった
    • Expoが活気があって、色々なサービスを知ることができ市場が分かる
  • Google Cloud Next '19のセッションでよかったもの
    • (谷口さん) Cloud Spannerのディープダイブセッション
      • Cloud Spannerの内部のことが紹介されていた
      • 整合性やパフォーマンスのために原子時計を置いている(TrueTime)という点に衝撃があった。
      • Google Cloud Storageを実際に使っている事例発表。規模が大きくてもシャード数の管理は必要ということが分かった。
    • (佐藤さん) モノリスサービスからマイクロサービスにはどうするか?
      • 自社サービスと結びつくところがあった(マイクロサービス)
      • チーム、組織をどのように構築するか紙芝居で紹介していた。周りをどのように説得するか、リアルな話に近くてよかった。
    • (舟橋さん)Keynote Day2
      • エンジニアが成長するための条件が語られていた
        • Innovation
        • Freedom
        • NoOps
      • GCPはマッチしているので、この3点を注目して使っていきたい
  • 新しくローンチされたプロダクトで興味のあったものは?
    • (谷口さん)
      • Cloud Run
        • GAEをよく使っているが、デプロイすれば自動スケール。Cloud Runはよく似ている。違いはコンテナベース。Dockerコンテナをスケールさせるというところが違う。とはいえ似ているのでどういう違いが出てくるのか注目したい。
      • Data Fusion
        • 自分の組織ではCloud Data Flowを使っているが、定型パターンでもコードを書いてデプロイが煩雑なのでData FusionはGUIでできるので望んでいたシンプルなデータフローが作れそう。
    • (佐藤さん)
      • Compute Optimized VMs
        • GCPをゲームのアプリサーバー、CPUを多く使う。新しいCPU世代がVMを使えるのはコスト削減に使える。
      • Traffic Director
        • サービスメッシュを組みたいとなるが、Googleが提供しているものに合わせたいので使いたい。ただ、技術検証についてはできていないのでどう使うかは未定。
    • (船橋さん)
      • Cloud Run
        • コンテナ化されていてOpsも自動復旧するのが良い。フルマネージドが進む中で、インフラを支えるために、自分たちがどのような技術力を持ってどこに注力するのかが考える必要がある。
  • 登壇者同士の質問
    • (谷口さん → 佐藤さん)GAEをメインで使っているが、どういうGCPの使い方をしているか?
      • 知っている範囲ではモンストはマルチクラウド。クラウドごとに構成が変わると困るので基本的にはCompute Engineを使っている。データセンターを持っているのでつなぐサービス、GAEを利用しているところもある。Cloud Buildなどを使っている。事業部、チームによってかなり異なる。知識共有についてはWikiやディスカッション、Googleに相談など様々な方法を使っている。
    • (佐藤さん → 舟橋さん)自社だとモンストがあるが、GREEはどうやってクラウドに移行したのか?
      • クラウドに移行するには上長への説得。メリデメがクリアにするところが大事。
      • クラウドに移行する際に組織の形。
        • サービスインストレーションチームはプロダクトチームと話して解決する。
        • スケジュールを担うチームに他に技術ユニット(Frontend, RDBMS, KVS, Monitoringなど)のチームがある。
        • 移行する際に各チームが責務を技術的に担う。検証を重ねて移行していく。
      • ほとんどのプロダクトを障害なく移行できた。
    • (舟橋さん → 谷口さん)フリーダムな状態で使い始めているが、認証、ユーザー管理を悩んでいるがどのように管理しているか?
      • GCP触り始めは人が少なかった。プロジェクトすうが増えて行ったり人が増えて行った。その中で手運用に限界がきた。
      • Google Groupを使って権限管理を始めた。Ownerだけが人の追加とかできるようになっている。
  • また来年もGoogle Cloud Next '19に参加したいですか?または準備したいことなど
    • (船橋さん)
      • セッション登録が遅かったので早めに登録した上で行きたい。
      • 全て英語なのでもっと勉強してから臨みたい。
      • 市場として自分の価値がどこに向かっていくのかはExpoが良いので逃さずに見ていきたい。
      • 他のゲーム会社さんとのリレーションを一番大事にしていきたい。
    • (佐藤さん)
      • 事前調査したものの、不足を感じたので(セッションが多い)しっかり勉強してから行きたかった。
      • Expoを見ると日本と世界の進み方が顕著に出てくるので、Expoをしっかり回りコミュニケーションを取りたかった。
      • PMミーティングに参加できたが、ざっくり質問したところしっかり力説していただいた。次回もぜひ参加していきたい。
    • (谷口さん)
      • 事前にセッションを予約したつもりだったが満員だったので、もう少し早めにスケジューリングしたい。
      • セッションがPMだと面白いので自分が気になっているサービスのPMセッションは見ていきたい。
      • PMミーティングに参加し具体的な質問をしたらどういう風に困っていてどういう風に解決してほしいか聞かれたので、そこを明確にして臨みたい。

Cloud 2.0 時代のゲーム開発を支える GS2

  • スピーカー : 丹羽 一智 氏(Game Server Services 株式会社 代表取締役社長 CEO)

物理的なサーバーを保有する時代からオンデマンドでサーバーを入手する IaaS への移行を Cloud 1.0 とし、Cloud DataStore や Cloud Functions、Cloud PubSub などのフルマネージドサービスを活用する時代を Cloud 2.0 とするパラダイムがあります。GS2 はこのパラダイムに率先して取り組んでおり、また GS2 自身もそのパラダイムをゲーム開発で生かせるようにするためのサービスです。このセッションでは、Cloud 2.0 時代のゲーム開発について話をします。

  • GS2(Game Server Services)について
    • ゲームサーバーを1Reqあたり0.02円で利用できるサービス
    • アカウント管理、課金通貨管理、スタミナ管理をマイクロサービスとして提供(使いたいものだけ使う)
    • Google Cloud Tech Partnerに参加
  • Cloud 2.0?
    • Mediumの記事を参考
    • Cloud 1.0
      • オンプレからIaaS、マネージドサービスに
    • Cloud 2.0
      • フルマネージドサービスの活用
    • なぜCloud 2.0に移行するのか
      • コードや環境には責任が伴う
        • Cloud 1.0はハードウェアの運用責任から解放された
      • コードを書くと責任が発生する
      • コードは0(コードがなければバグはない)
      • Cloud 1.0はソフトウェアが王、Cloud 2.0はアーキテクチャが王
  • GS2の実践事例
    • 高品質なゲームサーバーを低価格で届けたい
    • 開発のしやすいサービス
      • 開発リソースを最大化するには
        • インフラ構築、運用などゲームの本質的ではないコストを削減
    • 障害が発生しないサービス
      • Googleが提供するフルマネージドサービスを活用する必要がある
    • 本質以外のコストを削減
      • サービス維持費を最小限に
      • アイドル時に費用が発生しないフルマネージドサービスを活用、インシデント対応コストも削減
    • つまり
      • 何をとってもフルマネージドサービスを活用する必要がある
      • GS2はCloud 2.0に踏み出す
    • 仮想サーバを撲滅
      • ここ数年間、SSHをCIサーバ0以外していない
    • フルマネージドサービスは信頼に値する?
      • Cloud Functionに対する負荷テストで検証
      • シノアリスの事例で10万rps+を達成
    • こうしてGS2 gen2が生まれる(本日ベータ提供開始)
  • Cloud 2.0時代のゲーム開発
    • 何の注力すべきか
      • ゲームを面白くすることが為すべきこと
      • ゲームを遊べることを維持することは本質ではない
    • コードを美しくしてもゲームは面白くならない
    • ゲームの肝を実現する開発とは?
    • 本質に注力しましょう
      • 本質に注力しない開発で良いのか?
      • Cloud 2.0に移行すべき
    • GCPのフルマネージドサービスは抽象度が高い
      • 抽象度が高いとコードを書かなければいけない
        • バグが入る、保守が入る
        • コードは技術的負債
      • BaaS
        • Photon Cloudは無意識にCloud 2.0に向かっていた
        • しかしPhoton Cloudだけではゲームは作れない
        • GS2はゲームに特化したフルマネージドサービス
          • アカウント、課金通貨、マッチメイキング、ランキング、所持品、...

GS2 gen2は本日からβテストエントリー開始するとのアナウンスがありました。ぜひ参加しましょう!

長期運用タイトルのGCP移行実例とグレンジのこれから

  • スピーカー :
    • 村田 浩士 氏(株式会社グレンジ サーバーサイドエンジニア)
    • 稲垣 悟 氏(株式会社グレンジ エンジニア)

株式会社グレンジでは、長年運用しているポコロンダンジョンズをプライベートクラウドからGoogle Cloud Platform(GCP)へ移行を行いました。本セッションでは、移行を決めた理由からデータベースの移行、移行後のコストなどの話を通して、得られた知見を発表します。また、グレンジの GCP でのプロダクト開発のこれからについて紹介します。

  • GCP移行概要
    • GRENGE社
      • Cyber Agent系列
      • ポコロンダンジョンズ
      • Kick-Fight(鋭意製作中)
    • ポコロンダンジョン
      • GCPに昨年に移行
      • なぜデータセンターを移行したのか
        • 老朽化による決定
        • プライベートクラウドはネットワークが逼迫する
        • パブリッククラウドに移行
      • 移行プロジェクトから本番環境の移行完了までの流れ
        • (2016年10月)移行プロジェクト開始
        • 技術検証とインフラ構築開始
        • 本番構成の構築完了と負荷試験
        • 社内ツール移行、BigQueryログ転送開始
        • 開発環境移行、移行リハーサル
        • (2018年7月)本番環境の移行完了
  • 移行実例
    • 指針としたこと
      • 障害、メンテナンス時間
        • ユーザーからの信頼を得ているので、メンテナンス時間を
        • サーバー構成は買えない
        • ミドルウェアのバージョンは変えない
        • マネージドサービスは最小限
    • サーバー構成
      • 構成は基本的に変わらない(変えない)
        • Stackdriver Logging, BigQueryが増えた
        • Stackdriver Logging
          • ログの収集、検索、監視
          • 同じfluentdなので移行が容易だった
        • BigQuery
          • ビッグデータ解析プラットフォーム
          • ログDBの運用コストが大きかったのでこのタイミングで移行
          • Stackdriver Loggingでデータ移行できるので容易だった
        • Cloud SQLの導入は断念
          • 不定期に行われるメンテナンスが用途と合わない
          • 内容的にレプリケーションができなかった
      • Kick-Flightは今日から登録受付開始
    • 移行順序
    • 負荷試験
      • 移行前と同等のレイテンシが確認できるか
      • 4倍トラフィックの負荷が耐えられるか
      • レイテンシベースの評価に特化
      • 結果 : ほとんどのAPIで移行後の結果の方が良かった
      • 考察 : 構成を変えなくてもGCPに移行するだけで良い結果となった
    • 移行リハーサル : 失敗
      • 十分な準備ができていなかった
      • 社内エンジニア行動指針 : 二度目はない
        • 同じことでミスはしない社内文化
      • 移行リハーサル(再)
        • 最小構成で疑似本番環境を構築
        • 移行手順書を用意、レビュー
      • 本番移行は滞りなく完了
    • 移行後のトラブルと運用改善
      • インスタンスの再起動を検知するアラートが頻発
        • 原因はホストエラー
        • DBがフェイルオーバー
        • 単一ゾーン構成、かなり運が悪い場合はフェイルオーバーせずにサービス切断になる危険性があった
      • DBゾーン分散
        • masterとstandbyにMHA Managerを同居させない
        • 単一ゾーン障害でサービスを停止させないように
        • この構成にしたあとはアラートが起きなくなった
      • ホストエラーの検知
        • Stackdriver Loggingを活用
      • 運用改善 : スナップショット
        • スナップショットバックアップにより所要時間削減、開発効率向上
  • 移行後
    • インフラコスト
      • 移行後は高くなると思っていた
      • 移行直後は1.5倍になった
      • メトリクスを見たら結構落ち着いていた
      • GCEインスタンス数とマシンスペック見直し、確約利用割引を利用しコスト削減
    • サーバーサイドの体制
      • アプリ運用開発とインフラ運用を兼務できている
      • インフラ専任のエンジニアはいない
    • GCPのさらなる活用
    • BigQueryの活用
      • Sheet x BigQuery
    • データマイニングサーバーで毎日集計
    • Cloud BuildでCI
      • コンテナで静的コード解析、PHPUnitを実行
  • これから
    • Kick-Flight
      • k8s Engineの活用
        • 本番と開発環境を同じにしたい
        • デプロイを改善(BGデプロイ)
        • Open Matchの活用
          • マッチメイクングフレームワーク
          • ハロウィンのDoodleゲーム
          • スケーラブル
          • MMFだけ作れば良くなる
      • Cloud Spannerの利用
        • ゲームではデータベース容量が肥大化しやすい
        • Kick-FlightではCloud Spannerを採用
          • スケールアウトが簡単
          • アプリのシャーディング対応が不要

Kick-Flightは今日から事前申し込み開始とのことです。

『 イドラ ファンタシースターサーガ 』を支える GCP

  • スピーカー :
    • 安倉 剛司 氏(株式会社セガゲームス 第 3 事業部 第 3 開発 2 部 プログラムセクション リードプログラマー)
    • 森田 公一 氏(株式会社セガゲームス 第 3 事業部 第 3 開発 1 部 テクニカルサポートセクション リードプログラマー)

『 イドラ ファンタシースターサーガ 』の GCP 活用事例として GAE や Stackdriver、Firebase Realtime Database などの具体的な利用例と、Kurbenetes を活用した内製 mBaaS 開発や開発環境管理の効率化のノウハウを共有します。

  • 事例紹介
    • アプリ紹介
      • iOS/Android両対応のスマホゲーム
      • 400万ダウンロードを突破
    • サーバー構成
      • API : PHP7でGAEで構成
      • キャッシュサーバー : Redis, MemcachedはGCEで構築
      • 共有ポイントサーバー
        • GAEと
      • チャット
        • Firebase Realtime Database
      • GAE導入理由
        • GolangでREST APIを構築
        • Cloud Datastoreに格納
    • チャット事例
      • Firebase Realtime Databaseを採用
      • Stackdriverと連携できる
      • クライアント - チャットサーバー(Firebase Realtime Database) - ゲームサーバー(GCE)
      • Cloud Functionsでログ出力
      • 構成はルーム情報、ユーザー情報、メッセージ情報、ルール情報
        • ルール情報はアクセス制限のこと
        • 管理者からはアクセス可能
    • Stackdriver活用事例
      • Firebase Realtime Databaseもロギングできる
      • Stackdriver loggingでfluentd経由でロギング
  • k8s Engine活用事例
    • 共通基盤サービスとは
      • ゲームでよく使うバックエンドの機能を共通化
      • 開発、チェックのコストを削減
    • 要件
      • 特定の言語に依存しない
        • 向き不向き、流行り廃りがある
        • ライブラリとしてではなく、独立したサービストステ実装(gRPC + Protocol Buffers)
      • 特定のクラウドベンダーに依存しない
      • タイトルごとに独立している
        • 障害やメンテナンスがあると全てのゲームに影響が出てしまうため
      • メンテナンスコストが低い
        • メンテコストがゲーム数に比例しないように
      • 可用性、スケーラビリティ
    • k8s Engineを活用
      • 共通基盤サービスをk8sクラスタとして構築
        • マイクロサービスとして独立している
      • 開発環境も共通
        • GitLab, CIS(Common Infrastructure Service)Serviceはk8s Engineとして構築
    • 共通ログ基盤サービス
      • gRPCサーバーとは違い、fluentdのアグリゲーターとして構築
      • ログ基盤サービスに集約しStackdriver loggingに転送
      • 開発チームが構成を気にする必要なく使えるように
  • 開発環境事例
    • 以前
      • 1環境に1GCEインスタンスが必要
      • 新環境追加が気軽にできない
      • 各環境が複数人で共用
    • 改善後
      • コンテナ化したことで複数の環境を乗せられる
      • 環境名から用途や環境がわかるように
    • 結果
      • インスタンス料金が1/2に
      • インフラ管理コストが0に
      • 誰でも簡単に自分の環境が構築できるようになりチェック作業効率がアップ
  • まとめ
    • Infrastructure as Code, Immutable Structureが簡単に実現
      • 結果としてコストを大幅に削減できる
      • 環境依存の問題も起きない
    • マイクロサービスアーキテクチャと相性がいい
      • 環境ごとのインフラ管理は大変だが簡単に構築できるようになった
      • 不要なサービスを省いたり、必要最低限でスケールアウトできるのでコストメリットが大きい
    • k8s環境されあればどこにでぽポーティングできる(ポータビリティが良い)
    • デメリット
      • 学習コストが高い
      • アプリ開発者にはやや負担が大きい
        • 少人数でナレッジを蓄積
        • アプリはコンテナイメージ作成までにして、あとは専門チームに任せるのが理想
  • 最後に
    • イベント情報 : ハーフアニバーサリーを開催中
    • 龍が如くONLINEでもGCPを利用

まとめ

本イベントには初めて参加しましたが、ゲームサービスを作る上でGoogle Cloud Platformをどのように活用すれば良いのか大変勉強になりました!

個人的に印象に残ったのは「フルマネージドサービスを活用して運用や保守の時間を減らし、本質に注力しよう」というお言葉。フルマネージドサービスをうまく導入し、もっともやるべきことをやる時間を増やしていきたいですね。