クラウドマイグレーション 長期運営スマホゲームの ·...

59
長期運営スマホゲームの クラウドマイグレーション

Upload: others

Post on 25-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

長期運営スマホゲームのクラウドマイグレーション

Page 2: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

発表者紹介

❏ 株式会社グレンジ

ポコロンダンジョンズ担当

サーバサイド リードエンジニア

❏ 運営改善

開発の効率化

村田 浩士(むらた ひろし)

Page 3: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

Contents

1. GCP移行概要

2. ポコロンダンジョンズのGCP移行実例

3. GCP移行後に得られたこと

Page 4: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

GCP移行概要

Page 5: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

CyberAgent Group

Page 6: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

〜 5周年 〜2019年6月

鋭意開発中2019年 配信予定

グレンジのアプリ

Page 7: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

CyberAgentプライベートクラウド

GCP

ポコロンダンジョンズは昨年GCPへ移行

Redmine GitLab

Page 8: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

なぜデータセンターを移行したのか

● 利用していたプライベートクラウドの世代がクローズ

○ 老巧化による決定

○ コストの低さがとても魅力だった

○ ネットワークの逼迫

● パブリッククラウドのサービス拡充

○ 次はプライベートではなくパブリッククラウドへ

Page 9: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

なぜGCPを選んだのか

● コスト

○ 他社と検討したがあまり差はなかった

● 将来性

○ ポコダンのみではなく新規アプリにもつなげたい

■ データベースのディスク容量逼迫

■ アプリログのディスク容量逼迫

■ データマイニングの効率化

■ コンテナの利用

Page 10: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行プロジェクト開始から本番環境の移行完了まで

Page 11: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016

移行プロジェクト開始

● インフラ未経験のサーバエンジニア1人が挑戦

● サーバーエンジニアがインフラも管理する方針

● CAゲーム事業の技術サポートチームから1人も加わりプロジェクト開始

2017 2018

Page 12: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

技術検証とインフラ構築開始

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016 2017 2018

● オーケストレーションツール検証

● マネージド・サービス検証

● メトリクスツール検証

Page 13: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

ポコダン本番構成の構築完了と負荷試験

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016 2017 2018

● GCPの本番構成が問題無いことを確認できた

Page 14: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

社内ツール移行、BigQueryログ転送開始

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016 2017 2018

● 社内ツールの移行

● ログサーバの容量逼迫により、BigQuery先行導入

● 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

Page 15: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

開発環境移行、移行リハーサル

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016 2017 2018

● 開発環境移行

● 再度、負荷試験

● 移行リハーサル

Page 16: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

本番環境の移行

10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 72016 2017 2018

● 2018年7月4日 ステージング環境の移行完了

● 2018年7月5日 本番環境の移行完了

Page 17: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

ポコロンダンジョンズのGCP移行実例

Page 18: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

ポコロンダンジョンズのGCP移行実例

● 移行指針

● サーバ構成

● 移行順序

● 負荷試験

● 移行リハーサル

● 本番移行

Page 19: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行指針

Page 20: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行指針 - 課題

● 障害を起こさない

● メンテナンス時間を短く

Page 21: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行指針 - リスクを抑えたい

● サーバ構成を変えない

● ミドルウェアのバージョンは変更しない

● マネージドサービスの導入は最低限

Page 22: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行指針

最小限のリスクで

プライベートクラウドからGCPに移行をする

Page 23: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成

Page 24: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - 移行前(プライベートクラウド)

Mobile

Mobile

Mobile

DNS

Balancing

Balancing

Balancing

CDN コンテンツ

Web

Node.js

ログサーバ

バッチ

Redis pub/subマスタ

Memcachedマスタ

Redis cacheマスタ

Storage

Redis datastoreマスタ

mhaマネージャ

DBスレーブ

DBスタンバイ

Memcachedスタンバイ

Redis cacheスタンバイ

Redis datastoreスタンバイ

Redis pub/subスタンバイ

DBマスタ

Page 25: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - 移行後(GCP)

Mobile

Mobile

Mobile

Cloud LoadBalancing

Cloud LoadBalancing

Cloud LoadBalancing

CDN コンテンツ

Web

Node.js

ログサーバ

バッチ

Redis pub/sub

Memcached

Redis cache

Logging

CloudStorage

BigQuery

Redis datastore

mhaマネージャ

DBスレーブ

DBスタンバイ

Redis pub/subマスタ

Redis cacheマスタ

Redis datastoreマスタ

Redis cacheスタンバイ

Redis datastoreスタンバイ

Redis pub/subスタンバイ

Memcachedマスタ

Memcachedスタンバイ

DNS

DBマスタ

Page 26: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - 移行後(GCP)

Mobile

Mobile

Mobile

Cloud LoadBalancing

Cloud LoadBalancing

Cloud LoadBalancing

CDN コンテンツ

Web

Node.js

ログサーバ

バッチ

Redis pub/sub

Memcached

Redis cache

Logging

CloudStorage

BigQuery

Redis datastore

mhaマネージャ

DBスレーブ

DBスタンバイ

Redis pub/subマスタ

Redis cacheマスタ

Redis datastoreマスタ

Redis cacheスタンバイ

Redis datastoreスタンバイ

Redis pub/subスタンバイ

Memcachedマスタ

Memcachedスタンバイ

DNS

DBマスタ

Page 27: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - Stackdriver Logging● ログの収集、検索、監視

● シンクを使用してログのエクスポート

● 除外フィルタによる、ログの分別・コスト削減

● google-fluentd

○ fluentdベース

○ 元々fluentdを使っていたので置き換えた

Page 28: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - BigQuery● ビッグデータ解析

● 高速な集計・分析

● データマイニングで活用

Page 29: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - Cloud SQLの導入は断念

● 高パフォーマンス

● スケラービリティ

● 高可用性

● 検証したが、導入を断念

Page 30: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバ構成 - Cloud SQLをなぜ断念したか

● 不定期に行われるメンテナンス

● レプリケーションができない

○ メンテナンス時間を短くするため、レプリケーションが必須

○ 利用中のMariaDBのバージョンとCloud SQLは不可能だった

■ データレプリケーションエンジンを通したら、レプリケーションが追いつか

ない

Page 31: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行順序

Page 32: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行順序

社内ツール

開発環境

本番環境

● Redmine● GitLab

データマイニングサーバ

Page 33: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

負荷試験

Page 34: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

負荷試験

移行前

移行後

移行後

負荷

負荷

x 4

Page 35: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

負荷試験 - 結果

移行後4倍の負荷の

レスポンスタイムAPI・URI 移行前

レスポンスタイム移行後

レスポンスタイム

移行前のレスポンスタイムと移行後のレスポンスタイムの比較

移行前のレスポンスタイムと4倍トラフィックのレスポンスタイムの比較

Page 36: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

負荷試験 - 結果

現行4倍のトラフィックのレイテンシ

API・URI

プライベートクラウド

レイテンシ

現行トラフィックのレイテンシ

比較対象● avg:レスポンスタイムの平均値● max:レスポンスタイムの最大値● p99:99パーセンタイルの値

内容● GCP/プライベートクラウド● 緑色:レスポンスタイム向上(濃い色ほど結果が良い)

移行前のレスポンスタイムと4倍トラフィックのレスポンスタイムの比較

移行前のレスポンスタイムと移行後のレスポンスタイムの比較

Page 37: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行リハーサル

Page 38: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

● プライベートクラウドに最小構成での疑似本番環境を構築

● GCPに最小構成での疑似本番環境を構築

● 本番DBのデータをプライベートクラウドの疑似本番環境に反映

(レプリケーション)

● 移行手順書を作成

● 移行リハーサルを実施

移行リハーサル - 手順

Page 39: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行リハーサル - DBレプリケーション

Master

Standby Slave

Master

Standby Slave

Master

Standby Slave

Master

Standby Slave

本番 リハーサル

Page 40: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行リハーサル - 移行手順書

Page 41: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行リハーサル - 移行手順書

Page 42: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行リハーサル - リハーサル実施手順

手順書作成 手順書レビュー リハーサル実施 実施後レビュー

● レビュー反映 ● 机上確認● 属人化確認

● 時間計測 ● 効率化● 自動化● 手順確認

Page 43: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

本番移行 - 手順 ● アプリのメンテナンス

● データベースのレプリケーションが追いついたことを確認

○ Seconds_Behind_Master: 0

● DNSのIPアドレス切替

● メンテナンス中にログイン可能な端末で動作確認

● アプリのメンテナンス解除

● 移行作業は約2時間

Page 44: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

本番移行

● リハーサル通り、移行作業は滞りなく完了

最小限のリスクで

プライベートクラウドからGCPに移行

Page 45: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行後のトラブルと運用改善

Page 46: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

● インスタンスの再起動によるアラートが多発

移行後 - トラブル

Page 47: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

● 原因は、”ホストエラー”

● DBでフェイルオーバー発生

○ 単一ゾーン構成を危惧する

移行後 - トラブル - アラート頻発

Page 48: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行後 - トラブル - DBゾーン分散

● master と standby に MHA Manager を同居させない

● 単一ゾーン障害でサービスを停止させない

種別/Zone Zone A Zone B Zone C

master 〇

standby 〇

MHA Manager 〇

slave 〇

Page 49: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

移行後 - トラブル WebSocketが接続できない

● Android 4.0.4以下の端末で発生

○ TLS / SSL 認証

○ アプリのライブラリ修正が困難

● Android 4.0.4以下用のサーバーを急遽用意

○ GCP移行前と同じ構成でサーバーにSSL証明書を配置

○ TCP LB● 現在はサポートを切ったので、近日サーバーを停止予定

Page 50: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

GCP移行後に得られたこと

Page 51: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

インフラコスト

Page 52: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

GCP移行前と移行後のインフラコスト比率

移行前

GCP移行

確約利用割引Committed use discount

GCEインスタンス数とマシンスペック見直し

Page 53: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

サーバサイドの体制

● アプリ運用開発とインフラを兼務できてる

○ サーバサイドエンジニア 4名○ インフラ専任のエンジニアはいない

● GCP移行後 インフラ操作も容易

○ GCPコンソール

○ gcloudコマンド

Page 54: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

GCPのさらなる活用

Page 55: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

Cloud BuildでCI● コンテナで静的コード解析、PHPUnitを実行

● 常時稼働GCEと比較

○ ビルド時間分だけコストがかかるためコストダウン

○ 並列実行

○ CIの順番待ちが無い

Page 56: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

スナップショットスケジュール

● GCEのストレージを差分バックアップ

○ 頻度、時間を指定可能

○ 保存期間も指定可能、期間が過ぎると自動削除

● MariaDBのスレーブでは利用していない

○ 利用中のMariaDBのバージョンでは、

STOP SLAVEしてからでないとファイル間の整合性が取れない

Page 57: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

BigQueryの活用

● Spreadsheet × BigQuery

● データマイニングサーバ(GCE MariaDB)で毎日集計

○ BIツール × MariaDB × BigQuery○ BigQueryだけで完結させる計画

○ 集計を高速にしたい

Page 58: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

まとめ

● 移行前と移行後で変更点を減らすことのメリット

○ 移行時のリスクを減らせる

○ 検証中に比較も確認しやすい

● 移行後のマネージドサービス活用

○ 全サーバー移行後だと試しやすい

● 新規アプリにGCPの知見を活かせる

○ 魅力的なマネージドサービスGKE / Spanner

Page 59: クラウドマイグレーション 長期運営スマホゲームの · ログサーバの容量逼迫により、BigQuery先行導入 2018年7月に本番移行の実施決定、3月からエンジニア2人追加

ご清聴ありがとうございました!