⁠」⁠(⁠以降,戦国炎舞⁠)⁠。開発運営元である(⁠株⁠)サムザップにて,そのインフラの設計やサーバサイドの開発はどのように行われているのかを,サーバサイドエンジニアの中村一謹氏,そしてインフラエンジニアである富塚真氏(写真1)にお話を伺いました。今回お話を伺った中村一謹氏(左)と富塚真氏(右)1日1億リクエストを処理する強靱なバックエンド――まず,戦国炎舞のサーバサイドの構成を教えていただけますか。富塚:Linux,Apache,MySQL,PHPのいわゆるLAMP構成で,それにmemcachedやRedisを組み合わせています。MySQLに瞬間的なアクセスが集中しないように,フロント側でmemcachedに入れて,さらにレスポンスを求める処理にRedisを使う形です(図1⁠)⁠。リクエスト数はどの程度なのでしょうか。Entertainmentの略)と呼んでいるのですが,そのSGEの中でも戦国炎舞はリクエスト数が多い部類になります。Guild)と呼ばれる種類のゲームで,戦国炎舞は1日に3回大規模バトルである「合戦」が開催されます。30分間で獲得した「合戦ポイント」で勝敗が決まるのですが,この間のリクエスト数がおおよそ3,000万で,これが3回あるので1日あたり約1億リクエストになります。富塚:このGvGが戦国炎舞のおもしろさの肝になっているので,そこでユーザーがストレスなく遊べるかどうかが一番大変なところです。中村:「合戦」は約20名対20名の戦いになるため,1つのレコードに対して最大で同時に40件のリクエストが発生する可能性があります。そこでデータの不整合が起きないようにというのが,最も注意している部分です。整合性を保つことだけを考えて,ロックをかけてガチガチに固めてしまうとレスポンスにも影響しますから,そのバランスがポイントになっていますね。――同時リクエストが発生した際,ロック処理を適切に行いつつレスポンスを担保するのは難しい部分だと思いますが,どういった工夫をされているのでしょうか。中村:戦国炎舞をリリースした当初は,不整合が起きないようにロックをしっかりかけるなど堅めの設計にしていました。それでもゲームをリリースして時間が経ち,遊んでいただけるユーザーが増えてくると,どうしてもレスポンスが悪くなる面があったんです。ロックは今でもかけていますが,絶対不整合が起きてはならない部分とそうでない部分を分け,優先順位を付けて処理するような形に改善しています。具体的には,GvGでメインに使うデータに関しては現在はほとんどRedisを使っていて,GvG以外のユーザーデータなどに関してはMySQLを使う形です。――Redisに書き込むのはどういったデータでしょうか。中村:基本的には揮発性の高いデータですね。保存期間も短期間で,あとあと必要になるデータはMySQLに書き込んでいます。富塚:Redisはファイルにも書き込めるので,永続性を担保することも不可能ではありません。データの更新量が膨大なため,ファイルに書き込んでしまうとパフォーマンス面でかなり厳しくなってしまいます。そのため,レスポンスを重視する方向にシフトしました。現在はほぼオンメモリだけで使っている状況です。――日々運用されている中で,課題に感じていることはありますか。中村:1つはユーザー数の増加による負荷の問題ですね。サービスを開始してから3年間が経過し,蓄積されたマスタデータやログが膨大になっているんです。その影響で突然パフォーマンスが低下することもあり,その大量の情報をどうするかは悩ましいところです。――増え続けるデータをどうするかは,インターネット上でサービスを提供するうえでなかなか答えが出ない問題だと思いますが,それに対してどのような解決策を考えているのでしょうか。中村:ユーザーからの問い合わせの中でも,特に金銭に絡む部分はすべて残す方針にしています。それ以外のデータ,たとえば数年前のイベントのデータといったものは,いったん別のサーバに移して,運用中のサーバからは削除する方針で対応しています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。