Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

書評『Chef活用ガイド - コードではじめる構成管理』

『Chef活用ガイド』をご恵贈いただきました。ありがとうございます。

Chef活用ガイド コードではじめる構成管理

Chef活用ガイド コードではじめる構成管理

Immutable Infrastructureだから冪等性とかいらないんだーとかいう昨今ですが、そう簡単にはことは進まないので、ChefなりPuppetなりには今後もしばらくは活躍の余地があるだろうという見通しが共有されているところです。『入門Chef Solo - Infrastructure as Code』から1年経ったいま、決定版ともいえるような書籍が刊行されました。Chefの入門者はもちろん、Chefやその周辺環境をより深く知りたいユーザにとっても、有用な情報が満載であるといえるでしょう。

僕は趣味でChefを多少使ったりはしましたが、メインで使っているのはPuppetなので、Chefについてそんなに詳しくは知らないのですが、それはともかくとして、最初にそういったツールを使うときに困るのは、どういう感じで設計していったらいいかというところでしょう。Chefには最初からいろいろあるのでPuppetよりは指針が示されているといえばいえますが、とはいえそれなりに大きな規模のものを書いてみないことには難しいように思えます。

この"Infrastructure as Code"というアプローチに期待することは、ただ単にインフラをコード化するという、手続きの自動化ではありません。それは、サービスを提供するためには、まずコードを書いて各要素をモデリングし、それによってインフラを構築するという認識への転換です。つまり"Infrastructure as Code"がソフトウェア開発から取り込むべきなのは、テストやコードレビューといった開発プロセスではなく、オブジェクト指向という考え方です。

最初にPuppetに触れた時に@lamanotramaさんなどにいわれてなるほどと思ったのは、僕などは元々プログラマなので、こういう考えでした。なるほど、構成される内容はもとより、構成対象のサーバの群れのそれぞれもオブジェクトととらえて設計したらよいというのは、まさにInfrastructure as Codeって感じだし、発見だなと思いました。

ちなみに、上記はコラムからの引用ですが、この本は、本文がよいのはもちろんとして、コラムに思いがあふれている感じで、楽しめます。インフラ自動化にからめて、『機械との競争』についてのコラムもあったりして、リファレンス的な技術書としては珍しい感じがします。

先述の通り、僕自身は日頃からChefを使っているわけではないので、浩瀚にわたるリファレンス的な内容については、あーそういうのあったなーとか、今度使うときはここに書かれていたのを思い出そうという感じでざっくり読んだ感じでしたが、普通にChefを使っている人々にとっては、とても有益な内容でしょう。個人的には、そのリファレンス的な章が終わった後の、実践的な第16章が、上記した設計の流れで面白く読めました。こんな内容です。

  • コミュニティによるCookbookに対する考え方
  • 実際にありそうな構成を、Cookbookに落としていく際の考え方
  • プロトコルベースでのロール設計
  • Railsアプリの構成・運用方法

そうそう、そういうところが難しいんだよな、という感じなので、例に基いて説明されているのはとてもありがたいです。前に『入門Puppet - Automate Your Infrastructure』という電子書籍を書いた時に、自分自身、そのあたりをいい感じに伝えたいなと思って、あんまり大き過ぎず、かつ、ひと通り「設計」の要素のある構成を例に説明してみたりしたのでした。

というわけで、Chefについてよく知ってるひともあまり知らないひとも、全部読むかどうかはともかくとして、便利な辞書として手元においておくと、日々の業務にとても役に立つんじゃないでしょうか。その上で、上記に取り上げたあたりはざっくりとでも目を透しておくと、考えが深まるように思います。

Chef活用ガイド コードではじめる構成管理

Chef活用ガイド コードではじめる構成管理