そこで、こうしたリスクを改善するべく“大手術”を決断し、データベースの分割方法を「水平分割」に変更。ユーザーのレベルや経験値などでデータベースを分けるのではなく、ユーザーのIDごとにデータを分け、格納するデータベースを分割した。
甲さんらは、今後のユーザーの増加を見越して、データを何分割するかを検討した。分割し過ぎてデータベースが過剰になったり、逆に不足したりすることがないよう、本番同様の環境をクラウド上に構築し、実際のデータをバックアップして負荷試験に使用。試験の結果、20分割が適当と判断した。
新しく20分割したデータベースにデータを移行させる際は、AWSのマイグレーションサービスを利用し、ゲームのサービスを止めずに進めた。その際、本番環境で動いている、移行前のデータベースが影響を受けないように、レプリケーションを作り、そこから新しいデータベースに移行するように工夫した。
ただ、AWSのサービスでは、移行したデータに抜け落ちがないかの確認が難しかったという。「(AWSの)検証機能は、1つのデータベースから1つのデータベースに移行する場合しか使えず、今回のように複数のデータベースに移行するとなると使えなかった」
そこで20分割した新しいデータベースを、マイグレーションサービスを使って再び元のデータベースに戻し、移行前のデータベースと比較。データの抜け落ちがないことを確認したという。
「あらかじめ移行ツールが用意されているので、本来やるべき作業を軽減でき、検証などの作業に時間を割けることが、クラウドサービスのメリットと感じた」(甲さん)
移行作業は、社内のメンバー5人で実施。普段は、FGOに新機能が追加されるとき、データをやりとりするプログラムを改修したり、保存先のデータベースを設計したり――といったサーバ運用・開発をしているエンジニアの中から、移行作業の専属のチームを結成し「万全の体制で臨んだ」。
甲さんは「FGOではほぼ毎月、新規のイベントを実施したり、機能を追加したりして、その実装に人員を割いている。そのため、データベースの課題の解消が後回しになってしまった」と振り返る。社内のエンジニアが十分に増え、そうした課題を解決できる体制が整ったことも、移行が成功した要因という。
こうしてボトルネックを改善したFGOだが、ゲーム内イベントが始まった直後は負荷が重くなるなど「別の部分で問題と感じているところもある」(甲さん)。サービス開始から4周年を迎える7月末に向け、改善を進めているという。
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR