【2023/06/16】第2回プロデューサーレター/サービス開始直後のアクセス障害
みなさん、こんにちは。
プロデューサーの白石です。
最初に、サービス開始直後からアクセス障害により、ご迷惑をおかけしたことを心よりお詫び申し上げます。
楽しみにお待ち頂いていた冒険の開始が、思わぬ障害によって遅れることになり、大変申し訳ございませんでした。
サービス開始直後に発生していたアクセス障害についてご説明させて頂きます。
起きていた現象の主な原因としましては、Redisというデータベースサーバーの負荷が想定外に高くなってしまい、それが起因しサーバー全体の処理が詰まるような状況になっておりました。
Redisとは、高速にデータを処理することができる、データベース管理システムの一つです。
データを保存する機能とそのデータを好きなように(取得 / 作成 / 書き換え / 削除)できる機能の二つを合わせもつサーバーとなります。
データベースでは大事なデータを扱っているので、処理中にエラーになった場合、処理の途中で変更した内容を戻し(ロールバック)、整合性を保つようになっています。
今回のアクセス障害発生時に改めてソースコード調査を行ったところ、このロールバック処理の中でRedisサーバーへ想定外の負荷をかけてしまう不具合が存在することが判明いたしました。
そもそも処理の多くは正常に終了するので、不具合が含まれるロールバック処理が実行される頻度は低いのですが、もう1つ別の不具合があり、特定の条件の場合、正常終了後でもロールバック処理が実行される状態になっていました。
※正常終了した場合はロールバック処理を実行してもデータが巻き戻ることはない作りにしておりますので、その点はご安心ください。不必要な巻き戻りや、データの不整合などは無いことを確認しております。
結果、2つの不具合が重なり、Redisサーバーへ不必要な負荷をかけてしまい、障害に至っておりました。
本来このような問題は事前のサーバー負荷試験にて発見されるべきものです。
私たちとしても事前の負荷試験では十分な規模でテストを行っておりましたが、Redisサーバーへ不必要な負荷をかけてしまう不具合が試験時には実行されない状態になっていました。
そのため負荷試験において発見されず、このような事態を引き起こしてしまいました。
事前のソースコードレビューが不十分であったために起きてしまった事象です。
開発・運営チームのチェック体制の不備であり、深く反省しております。
今後は複数名のエンジニアによるダブルチェック・トリプルチェックを実施し、問題と成り得るコードが存在しないか、徹底的に洗い出す体制を整えます。
なお、今回の問題においては、その場で急ぎソースコードを修正し、複数名のエンジニアによるチェックを経て本来想定していた処理に戻すことができました。
サービス開始初日に起きていた大規模アクセス障害への対応としては完了しております。
加えて、今後もネットワークインフラの改善や負荷分散の仕組みを整えることで、より安定した接続環境を提供できるよう努めております。
6/15(木)および6/16(金)に実施したメンテナンスにおける「サーバー機器の調整」という内容には、これらの対応を含みます。
最後に、今後のコンテンツについてご紹介いたします。
アクセス障害時に関係スタッフは全力で問題解決に取り組みつつも、別チームでは粛々と新たなストーリーやコラボイベントの開発を進めてまいりました。
みなさんにお楽しみ頂けるものに仕上がったと手ごたえを感じております。
まずは直近予定している、6/19(月)からのDQⅪコラボイベントをお楽しみください。
現在実施中の大会プレシーズン「スライムカップ」の報酬でもらえる「仕立て屋メダル」もいよいよこのイベントから使えるようになりますよ!
イベントに向けて「ガンガンいこうぜ」で進めて頂けるよう、スキップチケットをプレゼントいたします。
プレゼントボックス内をご確認下さい。
みなさんのご期待に沿えるよう、スタッフ全員全力で開発・運営を続け、DQチャンプの世界をより魅力的なものにしてまいります。
引き続き、DQチャンプをよろしくお願いいたします。
『ドラゴンクエスト チャンピオンズ』 プロデューサー 白石琢磨