SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2016】セッションレポート(AD)

【デブサミ2016】18-D-4レポート
スクエニのゲームインフラを構築・運用してわかった、クラウドとの上手なつきあい方

  • このエントリーをはてなブックマークに追加

 これまで多数のヒットゲームを開発・提供してきたスクウェア・エニックス。現在の主力コンテンツであるソーシャルゲームの開発では、インフラに対する要求も高い。同社はIaaSとしてニフティクラウドを採用し、最適なインフラを実現できているという。同社 情報システム部の船寄悟史氏が、最適なインフラを得るためのクラウドの要件や、インフラ構築・運用効率化のノウハウについて紹介した。

  • このエントリーをはてなブックマークに追加
スクウェア・エニックス 情報システム部 船寄悟史氏
スクウェア・エニックス 情報システム部 船寄悟史氏

最適なゲームインフラのためには密な連携が重要

 2010年1月から提供されている富士通のパブリッククラウドサービス「ニフティクラウド」は、短時間で利用/停止できるオンデマンド性や、時間単位の従量課金、国内データセンターによる高いパフォーマンスなどを特長としている。現在の利用数は、4,000案件を越えており、「ドラゴンクエスト」や「ファイナルファンタジー」など数多くのヒットゲームシリーズを開発・提供してきたスクウェア・エニックスも、ニフティクラウドの有用性に着目し、活用している会社の一つだ。

 コンシューマゲームのイメージが強い同社だが、現在の主力コンテンツの一つとして、いわゆる「基本プレイ無料」モデルのソーシャルゲームも挙げられる。

 現在、ゲームのインフラ部分を担当している船寄氏であるが、ソーシャルゲーム開発の悩みとして、スピーディーな開発を求められるにも関わらず、多くの案件が同時進行していること、インフラ規模が大きいことを挙げる。船寄氏は「開発を外部の複数の会社に依頼していることもあり、使う言語やOS、ミドルウェアも様々。それぞれの風土に合わせるのが大変」と語る。

 ゲームのリリース後の運用フェーズでは、負荷は常に注視しなくてはならない。負荷テストはしているものの、予測以上のユーザーが集まった場合の対策も必要だ。

 こうした高いアクセスに耐えられるインフラとして同社が考えるのは、ネットワーク帯域では10Gbps、ユーザーとサーバ間のレイテンシは数十ミリ秒、ディスク性能は少なくとも数千、できれば数万IOPS(1秒あたりに処理できるI/O数)は必要、インスタンスタイプも柔軟に選べるというもの。

 インフラのみ優れていればよいかといえばそうでもなく、スピーディーなゲーム開発のための取り組みも必要だ。インフラ構築スピードを劇的に上げて機会損失を防ぐことと、新技術も含め多種多様な環境を扱うため、それらを扱うノウハウの取得が重要になる。

 そんな課題を持つ同社がニフティクラウドを採用した理由として、多種多様な技術要素によるプロジェクトへの対応が可能なラインナップの豊富さがあった。インスタンスをいつ立ち上げても品質が一定であり、耐障害性が高いのも評価できるポイントだという。

 また、サポート体制も手厚く、同社とニフティとで定例会を設け、課題や要望の共有など、問題解決へ向けて共同で取り組む姿勢が築けているという。「ここが一番大事なポイント。対面で話し、方向性を明確にしていかないと、フラストレーションが溜まってしまう」と船寄氏。もちろん、障害に対して即時対応できる体制が整っている。また経営層へ訴求できる点として、品質保証(SLA)の数値も基準を満たしていた。

 「ニフティクラウドとは、定期的なやりとりを通じ、課題の解決・提案を両者で探っていけた。こうした姿勢で長いおつきあいができたことが、一定の成果につながった」と船寄氏は振り返る。

Ansibleによる「全部入りサーバ」の構築の自動化

 では最適なクラウドを選択できた次の段階として、船寄氏は、インフラ構築をどのように効率化させたのだろうか。2年ほど前では効率化できているとは言えず、サーバ構築の際には開発チームに要件のヒアリングを行い、インストール等の検証をし、チューニングをしていた。さらにノウハウをチームメンバーに展開するためにドキュメント化していた。この方法では時間がかかるし、複数の案件が同時進行すると、さらに多くの工数を取られてしまう。

 船寄氏が考えた理想の状態は、前職でシェルスクリプトを使いサーバ構築を自動化していた経験を活かし、検証などは事前にやっておき、サーバを立てるときは「いくつかのコマンドをポチッとする」だけで展開ができるというもの。

 ただ、様々なミドルウェアを扱う関係上、インストールするものを毎回選択してスクリプトを作成するとなると、複雑になり、メンテナンスも大変だ。できれば案件名やアカウント名称、パスワードを決めるだけで何とかなるようにしたい。

 こうした理想を反映する形で作られたのが「All-in-one」と名付けられたサーバだ。代表的なものでは、言語はPHP、Ruby、Java、Node.js、WebサーバはApacheとNginx、データベースとしてMySQL、MongoDB、KVS(Key-ValueStore)としてmemcached、Redisをインストールした「全部入りサーバ」というわけだ。その他にも様々なミドルウェアが組み込まれている。「これで多種多様なゲームのアーキテクチャに対応できる。同時にバージョン管理をすることで、品質の向上と一定化を図ることが可能だ」(船寄氏)。

 「All-in-one」の構築には、AnsibleとGitを使っている。Ansibleは構成管理ツールだが、船寄氏が特に気に入っている点は、サーバ構築の手順を記述するPlaybookはYAML形式であるため、可読性が高いこと。Rubyで記述しなければならないChefと比較しても、インフラエンジニアに扱いやすい。対象のサーバに何もインストールしなくても、SSHでリモートログインして操作できるのも便利な点だ。

 Gitも定番ツールであるが、リモートレポジトリで複数人が同時に編集できるのが特長の一つだ。また船寄氏は「自分だけの環境にコミット(ローカルコミット)できる機能が、Subversionと比較しても一番よかった」と語る。Ansibleで作ったPlaybookをローカル環境で検証できるからだ。

 船寄氏は、この「All-in-one」を使うエンジニアたちのロールを「管理者」と「利用者」に分けた。管理者は、AnsibleのPlaybookを編集し「All-in-one」自体の保守をする。一方、利用者はエンジニア全員で、Ansibleコマンドを叩くことで「All-in-one」を利用してそれぞれの案件に必要なサーバを作成する、というわけだ。

 管理者がAnsibleのPlaybookを更新する際の手順は次の通り。管理者Aが、AnsibleのPlaybookをローカルで編集し、Gitでpushする。リモートレポジトリが更新された際は、他の管理者にメールで通知される。レポジトリの更新に気づいた他の管理者はgit pullを実施してローカル環境を同期する。管理者Aは修正した内容についてExcelで共有化して、一連の流れは終了だ。シンプルな運用であるが、インフラエンジニアのみの少人数チームであるため特に問題はない。

 利用者がAnsibleで「All-in-one」サーバを構築する際には、リモートレポジトリPlaybookをローカルにクローン、それぞれの案件用に、パスワードやホスト名などを編集し、Ansibleを実行してサーバが完成する、というわけだ。Ansibleを使う利用者向けのマニュアルでは丁寧に操作手順を示し、誰が操作を行っても同一の環境が構築できるように作りこんである。

 実運用が始まって以降は、どういうツールを使いどんな運用を行っているのだろうか。サーバ構築はAnsibleとGitで自動化しているが、あらゆる案件でAnsibleによる自動化ができるわけではないため、サービスの起動や、コンフィグ設定などの最適化は、bashを使い手動で行っている。「ここはもう少し最適化したい」と船寄氏。

 現在、同社が使用しているサーバの台数は、案件ごとに数百、全部で数千にもなっている。そのサーバ群のチェックを並列化・自動化するためのツールとしてはServerSpecとFabricが使われている。運用中のコンフィグなど設定変更時は、並列化ツールのCapistranoを長らく用いている。

 最後に、今回の効率化の取り組みで感じたこととして船寄氏は「チーム内の連携により、ノウハウが蓄積できたのがよかった。習得コストが意外と低く、やっていて楽しかった。物事をシンプルに考えて何を優先するかが大事で、All-in-one(全部入り)はスピード、品質、ノウハウの一定を目指した結果」と振り返り、セッションを終えた。

富士通の取り組み

 富士通では他にも、クラウド、モバイル、ビッグデータ、IoTなどの最新技術を活用したビジネス革新を実現するためのデジタルビジネス・プラットフォーム「FUJITSU Digital Business Platform MetaArc(メタアーク)」を提供している。また、デジタル革新ビジネスを目指すベンチヤ一企業向けに、共創を通じた新たなビジネスを創りあげることを目的とした「MetaArc Venture Community 」を用意。コミュ二ティでは、クラウド環境はもちろん、富士通とベンチャ一企業とのマッチングの場、商品の拡販・プロモーションなど、4つの支援プログラムを提供している。

 さらに富士通は、米国発祥の会員制オープンアクセス型のDIY工房「TechShop」とライセンス契約し、アジア第一号店をオープンした。大規模なスペースに設置された本格的な工作機器や3Dプリンタ、デザインソフトウェアなど、モノづくりに必要な道具がそろっており、会員同士の共創によるアイデアの洗練やビジネス化を目指している。

お問い合わせ

 富士通株式会社

  • TEL: 0120-933-200 富士通コンタクトライン(総合窓口)
    • 受付時間 9:00~17:30(土曜・日曜・祝日・当社指定の休業日を除く)
  • ニフティクラウド

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9313 2016/04/21 15:03

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング