記念すべき周年イベントにもかかわらず、2度もアクセス障害が起こるという苦渋をなめたCraft Egg。反省を踏まえ、5周年の前には負荷試験環境の再構築に踏み切った。
まず、負荷試験用のツールを切り替えた。当初は「Apache JMeter」を使っていたが、「Locust」というツールに変更。Apache JMeterは多機能な一方、瞬間的な負荷を再現しにくかった。一方でLocustは瞬間的な負荷を再現しやすく、参考にできる他社での導入事例も多かったことから利用を決めたという。
環境の再構築に合わせ、負荷試験に必要なコストの最適化も進めた。Craft Eggではこれまで、試験環境における負荷を掛けられるサーバには、通常のEC2インスタンスを使っていた。
しかし新環境では、途中で利用を中断される可能性がある代わりに、安く利用できる「スポットインスタンス」を活用。旧環境より安く負荷試験が行えるようにした。高川さんによれば、インスタンスに掛かるコストがこれまでの3割程度まで減ったという。
負荷試験の方法も工夫した。事前にボトルネックになりそうな場所をゲーム全体から洗い出し、不安な箇所をテストする方式にしたという。例えば、全プレイヤーが使うゲームのログイン画面や、複雑な処理の多い新機能などを対象に負荷試験を行ったという。
そして迎えた5周年当日。対策の結果、5周年はアクセス障害を起こさず乗り切ることに成功した。「3度目の正直。無事に周年を迎えることができた」と高川さん。今回の取り組みで、必要なリソースの目安を把握できたこともあり、より効率的な負荷対策ができる見込みだ。
一方で、23年3月に控えた6周年は、これまで以上のアクセスが発生する可能性もあるという。「これまで以上に大規模なアップデートを配信する予定」と高川さん。すでに新たな負荷対策の検討も開始している。
例えば新機能に関するデータをあらかじめ生成しておき、データベースへの負荷を減らす方法を検討しているという。6周年のタイミングでは新たな機能を複数追加することから、ユーザー一人一人にひもづくデータも、新しいものを大量に生成し、データベースに書き込まなければならない可能性がある。
これまではメンテナンス後にユーザーがログインしたタイミングで生成していたが、この方法ではアクセス障害につながる可能性がある。そこで、既存ユーザーのデータについては、メンテナンス中にあらかじめ生成しておくことを検討しているという。
負荷対策は6周年以後も進める方針だ。例えば、今後使われる見込みのないユーザーデータの削除や退避を検討しているという。
ガルパは「リセマラ」(リセットマラソンの略、ガチャで欲しいキャラやアイテムが出るまでインストールとアンインストールを繰り返すこと)が可能なゲームだ。プレイヤーによってはゲーム開始時に何度もリセマラし、そのたびにアカウントを作り直すので。実際にプレイされないアカウントのデータが大量にたまっていく。
実際、高川さんによればユーザーデータの99%近くが今後使われることのないデータという。一方で、データベースで保存しているデータの量もゲームのパフォーマンスに影響することから、不要なデータは削除したり、別のストレージに退避したりする方針だ。
「これまではプロジェクトとして負荷試験の重要度や大変さをプロジェクトとして認識できておらず、コストだけがかかっていた。苦い経験ではあったが、チームとしてパフォーマンスを意識した開発ができるようになった。プロジェクトとしても、インフラまわりの重要度を認識できるようになった。結果として、今後に生かせる財産となったと思う」(高川さん)
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR