資料公開 Chefの下準備 (#DevLove Chef de DevOps)

2012/07/22

  2012年7月21日に大崎のフューチャーアーキテクトさんで行われたChef de DevOpsで話してきましたのでその際の資料を公開しておきます。 なお、内容については2011年12月くらいに行ったワンクリックデプロイ勉強会の資料とほとんど同じですので、以前にご覧になっている方にとっては目新しいものは何もありません。 新作作りたかったのですがごめんなさい。

言いたかったことは色々あったりしますが、道具としてのツールを使いこなすのはプロとしてとても重要であるのは前提とした上で、それでも単にツール単体の話をする前に、もうちょっと大きな全体像をとらえる必要があるということです(仕事じゃないなら好きにすれば良いですがね)

目先の効率化ももちろん重要ですが、それがプロダクト全体に対してどう作用するのかというのを理解せずに進めてしまうと、周りの理解も得られませんし、長期的に物事をよりよくするという流れにつながりません。そしてそもそもその投資は本当に今優先順位が高い投資なのか?を抜きにやりたいことだけやっても仕方ない。

インフラ構築側がサーバを速く、楽に作れた、均質的に作れた。それだけで製品に価値が生まれるわけではなく、上物であるアプリケーションがいつでもデプロイ可能じゃなければ、端からみたらなんじゃそりゃ?です。逆も然り。ということで全体のプロセスの方向性を説明したわけです。そのことをここではあえて「下準備」と表現しました。

20120721 chefの下準備 #devlove from Ryuzee YOSHIBA

ちなみに、昨日の参加者にヒアリングしたところ、参加30人くらいのうち、単体テスト、結合テストを自動化していてCIがあり、ワンクリックでデプロイが出来て、環境構築も自動化されている方は4人いらっしゃいました。単体テスト自動化だけならほぼ全員やってたんじゃないかなー。あなたの現場はいかがでしょうか?

ちなみに僕はどうしているかというと、PHPを使っているケースだと

  • 開発環境はVirtualBox + Vagrant
  • Vagrantの設定ファイルである、VagrantfileではChefのレシピの自動読み込みを設定して開発環境を常に本番と同一化
  • 本番環境は大規模ならChefを使い、小規模だとChef Soloを使うケースが多い
  • Amazon EC2を使っている場合は、CloudInitでChef SoloまたはChef Clientをインストールしておいてセットアップするのがよくやる手(日経Linuxの2月号に書きました)。CloudFormationもたまに使う
  • アプリケーションや設定ファイルやレシピは全てバージョン管理システムで管理
  • アプリケーションのデプロイはCapistranoを利用。開発機、本番機等によって環境設定ファイルをわけてあるので、cap develop deploy とか cap production deployとかすればOK
  • DBのマイグレーションはDoctrineを使うことが多い。Capistranoでデプロイするときにもちろん自動で実行したりする
  • CIサーバはJenkinsで、これもChefのレシピが用意してあって、自動でPHP用のモジュールやプラグイン等をインストール済の状態にできる
  • Jenkinsではビルドパイプラインプラグインを使っていて、単体テスト→メトリクス計算→結合テスト→ステージングデプロイ→探索的テスト→本番デプロイの流れでビルドパイプライン化しています。ビルドの際はJenkinsのビルドパイプラインのボタンクリックによってCapistranoを実行

2012/07/22

著作

寄稿

Ryuzeeについて

Latest post: