「年末年始の高負荷」をどう軽減するか? モンストがアプリ・インフラ両面から挑戦した負荷対策【デブサミ2019】
【15-A-3】 モンスターストライクにおける負荷対策 ~エンジニアリングチームの挑戦~
人気スマートフォンゲーム「モンスターストライク(以下、モンスト)」は、ゲーム内のイベントやキャンペーン開催時に、サーバーが高負荷になりやすい課題を抱えていた。特に年末年始においては、新年を迎える深夜0時のタイミングでアクセス数がピークを迎える。この課題を解消すべく、モンストのエンジニアリングチームは2019年元旦の高負荷に備えるための負荷対策を実施したという。本セッションでは、株式会社ミクシィ モンスト事業本部 開発室 室長 白川裕介氏が、彼らの取り組んだ施策の詳細を解説した。
負荷対策のため、エンジニアリングチームがやれることを全部やる
セッション冒頭では、モンストのアーキテクチャ構成についての説明がなされた。
下図のとおりモンストでは、ユーザーからのリクエストを受け付けるロードバランサーがあり、後段にアプリケーションサーバーが配置されている。データベースはmaster・backup構成。非同期処理にはRedis+batchが用いられている。
キャッシュ処理のためにMemcachedが多用されており、パケットをリレーするTurnサーバーによってマルチプレイが実現されている。監視システムとしては、Nagiosによるサーバー監視、Kibanaによるログ監視、CloudForecast、Grafanaによるモニタリングが行われている。
自社データセンターのサーバーと複数のクラウド事業者のサーバーを併用するハイブリッド構成になっていることも特徴である。通常時、本番環境の稼働サーバーは約1000台もの規模というから驚きだ。また、自社データセンターを冗長構成にすることで、高い可用性・耐障害性を実現している。
モンストのエンジニアリングチームはなぜ負荷対策を実施したのか。その理由を白川氏はこう語る。
「モンストでは、コラボイベントや限定クエスト、限定アイテムの配布などのタイミングでサーバーが高負荷になります。事前にユーザーへの告知をしているため、そのタイミングで多くの方がログインされるからです。
例年ですと、1年のうち、もっともアクセスが増えるタイミングは年末年始です。ちょうど新年を迎えたタイミングでアクセス量のピークを迎えます。なぜなら、0時から始まるガチャで強いキャラが出現することが、ユーザー間で認知されているからです」
過去2年間の年末年始では、モンストのエンジニアリングチームは苦い思いを味わってきた。2016年末では、サーバー高負荷によってデータベースのスロークエリが発生してしまい、緊急メンテナンスを実施。2017年末では、緊急メンテナンスは免れたものの、アプリにつながりにくい状態が2時間程度も続いてしまった。
「年末年始のタイミングで、ユーザーの方々にご迷惑をおかけしたくありません。これまでの反省を踏まえて、エンジニアリングチームでは2018年の年末に向けてやれることを全部やると決めました」
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
