SHOEISHA iD

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

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

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

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

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

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(土曜・日曜・祝日・当社指定の休業日を除く)
  • ニフティクラウド

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

  • このエントリーをはてなブックマークに追加
【デブサミ2016】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング