[prologue]日本最大級のインターネットサービス「Yahoo! JAPAN」を運営するヤフー株式会社(以下ヤフー)における構成管理フレームワーク「Chef」(シェフ)の導入を推進したエンジニア2名にお話を伺いました。ポータルサイトであるYahoo! JAPANはインターネットショッピングやオークション、さらに金融サービスなど様々なサービスが展開されている日本有数のポータルサイトになっています。そのサイトを支えるサーバーを管理するために様々なツールが使われていますが、Chefはサーバー構成管理ツールとしてヤフーの基盤を支えるツールとして採用されています。[/prologue]
野田さんと須藤さんの役割を教えてください。
野田:我々はプラットフォーム開発本部ということでサーバーなどのソフトウェアなどについてのプラットフォームを管理しているグループです。
ヤフーではインフラストラクチャーと言うと下のハードウェアなどについて管理を行っている別のグループがありますので、その上のレイヤーを担当しています。
須藤:私は途中からChefの社内展開に参加したという形で今は野田さんの仕事を引き継いでいるという形です。
写真: ヤフー株式会社の須藤氏(左)と野田氏(右)
構成管理ツールとしてChefを採用
Chefの採用に至った背景を教えてください。
野田:元々はアメリカのYahoo! Inc.が使っていたサーバーの構成管理ツールをローカライズして日本でも使おうというのが背景にあったんですが、社内的な事情でそれを使わずに他のツールで代替しようということになりまして、いろいろツールを評価していたということがあります。
実は他にも構成管理ツールとしてChefを使おうというグループが社内にはありまして、私は元々そちらでChefは使い始めていたんですが、その2つの流れが重なってChefを社内でもっと使おうということになりました。
ツールを評価していたということですが、具体的には?
野田:Puppetは評価しましたね。ただPuppetだと設定ファイルであるManifestが独自なのでどうしても学習に時間がかかってしまうということでChefに決めたということです。Ruby DSLで書けるというのは大きなアドバンテージだと思います。
5万台以上のサーバーを管理
実際にChefを入れてから管理するサーバーの数は?
野田:20台くらいから始めて社内のシステムが順次Chefを使うようになってサーバーの数は着実に増えていきました。現在は5万台を超えたくらいですね。
システムとしては社内で使っていたオーケストレーションツールを入れ替える時にChefを使うことになって、そこからグッと増えましたね。社内のツールを入れ替えるタイミングで各グループのエンジニアが一斉にChefを使い始めたという経緯があったようです。
図:Chefで管理しているサーバーの増加
Chefの良いところは?
須藤:色々なスクリプトを組み合わせなくてもRubyベースで記述ができて、ひとつにまとめられることが良いと思います。あとはクックブックを共有したり、バージョン管理したりできることですね。サーバー管理に関してよく行う操作をレシピとして社内で共有したりしています。
野田:ソースコードリポジトリを使ってクックブックを管理できるのが良いですね。やはり色々使っていくと更新を加えていくことになるんですが、それをちゃんと「ここを変えたから更新した」という履歴を残すことができるのがありがたいです。社内のグループにクック プックをコントリビューションしてもらって公開したりすることで、全体的にもノウハウが溜まってきたと考えています。
Chef利用者のための駆け込み寺
Chefを社内に拡げるためにしたことは何ですか?
野田:毎週1時間くらい駆け込み寺のような相談会をやって社内のグループからChefについて質問を受け付けたことはありましたね。
プラットフォーム開発本部の3人のエンジニアが同時並行で相談を受けてどうやって使うのか?既存のツールからの乗り換えをどうやるべきか?などについてかなり細かい技術的な内容についてコンサルティングを行ったこともありました。
グループのエンジニアもちゃんと勉強してから相談に来るので結構、難しい質問もありましたが……。
須藤:他にも勉強会に講師として参加してChefを拡めたりしました。社内でDevOpsを推進するという流れの中でChefを使って自動化をすると言う感じです。
Chefについて望むことはなんですか?
野田:ヤフーとしてはサポートを重要視してChefを選んでいますので、それは継続して頂きたいですね。
何か有った時に助けてくれる存在というのはありがたいです。機能面で言えば、コンテナー、そしてKubernetesをこれからはヤフーとしても、もっと使っていくことになると思うのでその管理にも使えるようになると良いと思います。
他にはプロダクトとしてのロードマップを定期的に見せて欲しいとは思います。