Adobe は先日,Hadoop/HBase デプロイメントを自動化するための Puppet レシピ をコミュニティ向けにリリースした。InfoQ では PuppetLabs の創設者である Luke Kanies 氏に,その目的について詳しく聞いた。
Puppet はデータセンタの自動化を目的とするオープンソースツールであり,InfoQ でも2010年2月に一度取り上げて いる。Puppet は小中規模の企業だけでなく,Google や Digg,Sun/Oracle といった大企業のインフラとしても使用されている。
Hadoop は Apache 財団のオープンソースプロジェクトである。Java で記述されていて,巨大なデータを取り扱うためのスケーラブルで分散可能なフレームワークを提供する。Google の MapReduce パラダイムに着想を得た Hadoop は,Facebook や Twitter など,ペタバイト規模のデータを扱う企業で運用されている。
今回 Adobe がリリースした Puppet レシピ は,Hadoop/HBase のデプロイを自動化するためのものだ。InfoQ では Puppet の支援企業 Puppetlabs の創設者であり,プロジェクトのリーダでもある Luke Kanies 氏にインタビューした。Adobe がこの Puppet レシピをリリースしたことに関して,氏は3つの事実を強調している。
- Adobe のような大企業が,基幹インフラに Puppet を使用していること
- 従来型インフラと先進的インフラの両方の管理に Puppet が使用されていること
- Puppet を利用したソリューションの共有化とコラボレーションの価値を Adobe が認めていること
オープンソースの利用を公表する大企業の存在は,オープンソースプロジェクトの従事者にだけでなく,インフラへの導入を検討している人々にとっても重要な意味を持つ。大企業におけるオープンソース利用に関して,氏の見解を聞いた。
私の経験から言えば,企業の大部分はオープンソースに満足しています。ただし私の経験は,オープンソースのサービスやサポートに積極的に対価を払っている企業や,機能しない商用ソフトウェアをオープンソースに置き換えている企業に,どうしても偏ったものになってしまいます。
5~10年前, Puppet を使用する企業の多くは,オープンソースに大きく依存することに非常に抵抗を感じていました。しかし現在では,本当に多くの人たちがオープンソースを活用しています。マーケットも確実に変化したと思います。
ビジネス的に裏付けされたオープンソース企業は,開発者と顧客どちらにとっても望ましいものだ。Puppet がどのように発展してきたのか,Luke に質問した。
Puppet の特徴的な点のひとつとして,プロジェクトとサポート会社が同時に発足したことがありますが,これは私の経験を活かしたものです。もしプロジェクトが,請求書の支払いができるほどうまく立ち行かなかったとしても,私の生活がプロジェクトの状況に頼らずに済むのであれば,何とか切り抜けることはできるだろう,という考えなのです。システム管理者指向のプロジェクトである Puppet では,開発者志向のプロジェクトほど多くの協力は期待できません。ですから,Puppet Labs によるスポンサーシップは一層重要なのです。
Hadoop が採用されるのは,大量のデータを扱う必要のある場合が普通だったが,大学での教育目的という新たな用途も見つかっている。Hadoop 用の Puppet レシピは中小規模の企業にも関心の持てるものなのだろうか。Luke の意見は次のとおりだ。
Puppet モジュールによって Hadoop は,より規模の小さな組織にもアプローチ可能になると思います。Hadoop のデプロイと管理に要するコストを正当化するためには,それによって達成される自動化が相当に高度なものでなければなりません。しかしデプロイと管理をシンプルにすることで,小規模な組織でも対応可能な程度にプロジェクトの全体コストを押さえることができるのです。
自動化は大企業においては十分達成されているものの,規模の小さい企業では管理やデプロイ設定に要する労力についての不安も多い。Luke が Puppet を導入する場合の秘訣を教えてくれる。
Puppet を使い始めるには,まずは苦痛を感じている部分の自動化から取り掛かるのがよいでしょう - 夜中に呼び出されたり,たくさんチケットを生み出したり,時間ばかり掛かって成果がないようなものから始めるのです。実際にやってみると,たいていはそれほど複雑ではありません。自動化することによって時間が自由になり,より大きく長期的な計画が可能になります。
ほとんどの Puppet ユーザが,最初は非常に小さな部分から始めています - 機械のごく一部分の管理から,というように。例えば,私たちはほとんどの場合,最初は企業の1部門や1部署といった単位でサポート契約を結んでいます。そして Puppet デプロイメント毎にグループからグループ,あるいはサーバプールからサーバプール,といった範囲で契約を拡大していくのです。
Puppet を使って Hadoop をデプロイするとき最初に必要なのが,Hadoop を用いて解決すべき問題であることは当然です。しかし私は Hadoop のためにだけ Puppet デプロイメントを構築する,というのも理にかなった選択だと思っています - Hadoop の使用を希望していて,現在 Puppet を使用していないのならば,Hadoop 以外のものを Puppet で管理しなければならない理由はありません。私はこれまでに,目的を絞った Puppet インフラ構築を行う企業の例をいくつも見てきました。最初の問題さえ解決すれば,Puppet の利用はやがて拡大していくものです。
Puppet に興味のある InfoQ 読者には Puppet Module Repository を訪れることをお奨めする。Puppet による問題解決の実例が紹介されている。他の Pappet ユーザに質問や議論をしたいなら Google Group の http://groups.google.com/group/puppet-users がいいだろう。Puppet についてより深く知りたい人のためには,先日リリースされた PuppetCamp Europe の ビデオとスライド集 がある。