ヤフーは、多様なサービスを開発・運用するための基盤の共通化に乗り出した。継続的インテグレーション(CI)ツールの「Jenkins」を核にしたもので、2015年に入って本格利用を始めている。「サービスごとにバラバラだった基盤を“中央集権化”することで、サービスの開発・運用環境を素早く構築できるようになる。開発・運用環境を提供するマシンリソースの効率化にもつながる」。共通化を進めるヤフー システム統括本部 アーキテクト室 アーキテクトの須田一輝氏はこう強調する。

写真●ヤフー システム統括本部アーキテクト室アーキテクト 須田一輝氏
写真●ヤフー システム統括本部アーキテクト室アーキテクト 須田一輝氏
[画像のクリックで拡大表示]

 新基盤では、独自に開発したWeb UIに必要な項目を入力するだけで、ビルドやテストを自動化するJenkinsのサーバーをサービスごとに立ち上げられる。Jenkinsのジョブ定義やビルド手順などを記述する設定ファイルは、サービスごとにソースコード管理システム「GitHub Enterprise」へ登録しておく。これまでプロジェクトごとに管理されていた設定ファイルを誰でも見られるようになるため、「今後は共通化が進むだろう」とヤフーの須田氏は期待する。

コンテナー型仮想化ツール「Docker」で高速化

 今回の新基盤ではさらに、コンテナー型仮想化ツールの「Docker」を活用し、ビルドやテストの高速化を図った。

 新しく作成・修正(コミット)したソースコードは、Dockerのコンテナー上で自動的にビルドしてテストする仕組みにした。Dockerを使うことで通常の仮想マシンよりも起動時間が短くて済み、「chroot」などを使う従来の軽量仮想化の仕組みよりもセキュリティを高められる。従来のchrootを使う場合、管理者用コマンド(sudo)を使うとホスト側の資源(プロセスなど)が見えてしまう問題があった。その点Dockerは、あらかじめ用意したコンテナーイメージの中で、ビルドに必要な最低限の権限だけに制限できる。「今回の中央集権化には、このセキュリティが不可欠だった」(ヤフーの須田氏)という。

 こうしたヤフー全体の開発・運用基盤の構築に関して、これまでの取り組みも含めて「ITインフラSummit 2015」で詳しく解説してもらう。システム構築・運用の自動化をどう進めればよいのか、さまざまなヒントが得られるだろう。