Yahoo! JAPAN Tech Blog

大規模サーバシステムの運用がどのように実施されているのか、多くの運用者が興味を持っているだろう。FreeBSDやCentOSをインストールしてパッケージインストールして運用するという個人レベルの作業と、どの程度の違いがあり、どういった仕組みを利用しているのか興味は尽きない。ヤフーにおけるパッケージ管理 (Yahoo! JAPAN Tech Blog)において、Yahoo!が実施しているパッケージ管理システムが紹介されている。Yahoo!の安定したサービスをより多くのユーザに提供するための工夫が紹介されており参考になる。

Yahoo!では開発者と運用者が分離しているという。開発者のアカウントは運用サーバには用意されていない。つまり、開発者が成果物をscpで本番サーバにコピーする、といったことはできないようになっているという。またほとんどの操作を「ヤフーインストーラ」と呼ばれるソフトウェアを経由することでさまざまな危険性を排除している。エンジニアは最初の技術研修でヤフーインストーラについて学ぶというほど、基本的で重要となるソフトウェアだという。ヤフーインストーラの主な特徴は次のとおり。

  • パッケージのインストール/アンインストール/管理
  • プロセスの制御
  • システム設定の変更
  • Perlで開発されており、日々開発が継続されている

操作をヤフーインストーラ経由にすることで、次のような利点が見込めるという。

  • ヒューマンエラーの軽減
  • 操作のトラッキングの実現
  • 大量の操作を現実的に実現

Yahoo!はベースシステムにFreeBSDを採用している。パッケージも基本的にはFreeBSDのPorts Collectionに近いものにヤフーインストーラ用の設定ファイルを追加したような作りになっているという。FreeBSD Ports Collectionとの主な違いは次のとおり。

  • stable、current、testという3つのブランチがある (FreeBSD Ports Collectionは1つのブランチのみ)
  • パッケージは専門のチームが開発や保守を実施している
  • 何万個という数のパッケージが存在する

パッケージは専門のチームで開発と保守を実施しており、あるサービスの開発者は自分の担当するサービスの開発と保守に専念できる仕組みになっているという。操作をヤフーインストーラと呼ばれるソフトウェア経由にしていること、パッケージブランチに3つのバージョンがあることなどがFreeBSDをそのまま利用する運用方法とは特に違う。