NetEase Gamesについて
NetEase Gamesは、グローバルを代表するオンラインゲーム開発会社です。2001年にオンラインゲーム事業を開始して以来、多数の人気タイトルを生み出してまいりました。現在では、モバイル・PC・コンソール向けゲームをグローバルに展開しており、サービス基盤にはライブサービス型ゲーム特有のアクセス特性への対応が求められています。通常時の安定したアクセスに加え、新作リリースや大型イベント時には急激なトラフィック増加にも耐えられる高い拡張性が必要となっています。
課題
ゲーム事業基盤では、MySQLの構成が典型的な1台のPrimary(Writer)+10台以上のRead Replicaという構成まで拡大していました。事業規模の拡大に伴い、以下4つの課題が顕在化していました。
① 高並列アクセスとレイテンシへの厳しい要求
ピーク時には、Primaryが約10万QPS、各Read Replicaが数万QPS、全体で約100万QPSという非常に高いアクセスを処理していました。ゲームサービスではレスポンス遅延に極めて敏感であり、わずかなレイテンシの揺らぎ(Latency Jitter)も許容できませんでした。
② 単一ノードのストレージ容量が肥大化
各MySQLインスタンスには10TBを超えるデータが蓄積されており、単一ノードでOLTPを処理するMySQLにとって大きな負荷となっていました。
③ Read Replicaのリアルタイム同期
Read Replicaには高いリアルタイム性が求められていました。しかし、スロークエリなどが発生するとレプリケーション遅延が発生し、そのままサービス品質へ影響してしまう状況でした。
④ 運用負荷の増大
イベントなどによるアクセス急増時には、Replicaを追加して負荷を分散し、障害発生時はReplicaを再構築するという運用が必要でした。しかし、数TB~10TB超のデータを扱う環境では、スケールアウト、バックアップ、リストアのいずれにも数時間を要し、サービス要件を満たせなくなっていました。
OceanBaseを採用した理由
これらの課題を解決するには、水平スケールできる分散データベース、高負荷でも安定した性能、アーカイブデータを大量に保持しながら高速検索可能という条件を満たす必要がありました。
NetEase Gamesでは、以下を評価基準として製品選定を行いました。
· 安定した性能(レイテンシの揺らぎが極めて少ないこと)
· 高い並列処理性能(最大100万QPS)
· オンラインでの水平スケール
· MySQLとの低遅延同期
· トータルコスト削減
OceanBaseはこれらすべてを満たしていました。
· 金融レベルの高可用性
OceanBaseは3レプリカ分散アーキテクチャを採用しており、RPO=0、RTO 8秒未満を実現しています。
· アプリケーション停止不要のオンラインスケール
ノード追加・削除時には自動でデータを再配置し、アプリケーションを停止することなくスケールアウト/スケールインを実現できます。
· リアルタイムデータ同期
本番導入前には約1か月にわたるストレステストを実施し、MySQLとの同期遅延はほぼゼロであり、従来課題となっていたReplica遅延を解消しました。
· マルチテナントによるリソース分離
各ゲームサービスを独立したMySQLインスタンスのように扱いながら、CPU、メモリ、IOPS
をテナント単位で完全に分離します。複数ゲームが同一クラスタ上で稼働しても相互干渉しません。
· LSM-Treeによる高圧縮ストレージ
OceanBaseはLSM-Tree構造を採用し、マイクロブロック単位での圧縮・エンコーディングにより、MySQL(B+Tree)と比較して70~90%のストレージ削減を実現しています。圧縮率を高めながらも検索性能は維持されています。
さらに、MySQLとの高い互換性によりアプリケーション改修が不要で、HTAP機能により将来的にOLTPと分析処理を統合可能であることも採用を後押ししました。
システム構成
NetEase Gamesでは、OceanBaseをMySQLの置き換えではなく、既存MySQLと連携する形で導入しました。

現在もMySQLは更新系データベースとして利用され、一定期間経過したデータは業務ルールに従って削除されています。
一方、OceanBaseは3レプリカ構成で全データを保持します。OMS(OceanBase Migration Service)を利用してMySQLから継続的に論理レプリケーションを行い、MySQL側で削除された履歴データについては同期対象から除外することで、OceanBase側には完全な履歴データを保持しています。その結果、従来Read Replicaが処理していた参照系アクセスを順次OceanBaseへ移行し、分散SQLデータベースとして大規模な読み取り負荷を吸収しています。また、一括切り替えではなく、OMSによるリアルタイム同期を維持したまま段階的に参照トラフィックを移行することで、サービスを停止することなく安全な移行を実現しました。
導入効果
OceanBase導入後、システム運用と性能の両面で大きな成果を得ることができました。
· 15%の参照トラフィックを安定処理
OceanBaseは従来MySQL Read Replicaが処理していたピークトラフィックの約15%を受け持ち、レイテンシの揺らぎをほとんど発生させることなく安定稼働を実現しました。
· ストレージコストを80%以上削減
MySQL単一コピーと比較すると、OceanBaseではストレージコストを80%以上削減し、さらにMySQL側で履歴データをアーカイブすることで、残存データ量も30%以上削減できました。
· バックアップ・リストアを約3倍高速化
圧縮率が高いため、障害発生時に復旧対象となるデータ量が大幅に減少し、バックアップおよびリストア時間も従来比で3倍以上高速化されました。将来の拡張にも柔軟に対応し、OMSによる継続同期とMySQL側の定期データ削除により、データ増加による運用リスクを抑制できます。今後さらにアクセスが増加した場合でも、従来のようにMySQLインスタンスを追加する必要はなく、OceanBaseクラスタのリソースをオンラインで拡張するだけで対応できるようになりました。
まとめ
モバイルゲームアプリが抱える「急激なアクセス変動」「複数タイトルの並行運営」「長期運営による固定費」という構造的な課題は、いずれもデータベースに直結します。OceanBase は、ダウンタイムなしの自動スケーリング、強整合かつ高可用な分散アーキテクチャ、高圧縮率によるストレージコスト削減、そしてマルチテナントによるリソース集約によって、これらの課題に正面から応えます。