昨日、JTF2014に行って来た。
インフラエンジニアさんのカンファレンス?らしい。
産業技術大学院大学でやっていたものなんだけど、そのときのメモメモを
いくつか。
まずはじめに
Serverspecに見る技術トレンドを生み出すヒント
をメモメモ
■自己紹介
宮下氏 http://mizzy.org
■アジェンダ
・最近のインフラ系トレンド
・Serverspecとは
・Serverspecが生まれた背景
・Serverspecの認知度
・Serverspecの成功要因
・まとめ
■最近のインフラ関連技術
・OSからミドルウェアといった
ソフトウェアレイヤーを指す言葉としてのインフラです
・インフラ関連技術トレンド
サーバー関連ツール
Chef人気
今年になって4月、5月と立て続けに書籍発刊
USでは2014年にPuppetのシェアを超えたらしい
Ansible(あんしぶる)
Chefへのカウンター
(比較的簡単に使える)
仮想化関連ツール
Vagrant
Docker(勢いある)
テスト駆動インフラとインフラCI
TestKitchen
Serverspec
・Immutable Infrastructure
Trash Your Servers and Burn Your Code
Web+DB Press vol.81
■テスト駆動インフラ インフラCI
・WebDB Press 80
・テスト駆動インフラ/インフラCI
アプリケーション開発の手法をインフラ構築に応用
@riywoくんが2012年にインフラCIについて書いている
自分自身構想は2007年ぐらいからあった
・テスト駆動インフラ/インフラCI
インフラをテスト可能にするのはServerspec
@t_wada(テスト駆動開発の一人者)
Github Flowを使ったインフラ構築・・・
■Serverspec
・Serverspec
2013年3月末にリリース
RSpecでサーバーの状態をテスト
ほんしつはサーバーの状態を記述したコードをテスト
Puppetマニュフェスト、Chefレシピ
インフラコード開発や利ファクタリングを効率よく行うためのツール
・Serverspecのスペル
まんなかのSを大文字にするのは間違い
→「RSpec」
■Serverspecはなぜ生まれたのか
・テストツール開発のきっかけ
2006年にPuppetを使い始めた
サーバー構築はPuppetによって自動化できた
じゃあ次は構築後のチェックを自動化したい
Excelチェックシートでの目視確認やめたい
・Assurer
2007年に作ったPerl製サーバテストフレームワーク
プラグインで拡張可能
Plaggerの影響
make testでテスト実行/TAP形式で結果出力
・Assurerの敗因
Surverspecと違い振る舞いをテスト
→状態のテストよりも要件が複雑
欲張っていろいろ詰め込みすぎて、さらに複雑になった
→フェーズ分け、プラガブル、分散処理、シェル
コンセプトがServerspecほど明確ではなかった
開発者である自分すら使わなくなった
・Assurer以降
時々思い返すことはあったけど積極的に何かしようともしなかった
・またPuppetさわりはじめた
自分がかつて書いたPuppetマニュフェストがレガシーになっていた
リファクタリングしたくなった
リファクタリングするなら当然テストが必要だし
CIもやりたい
・インフラテストの前準備9
インフラCIやろうと思って、まずはCIを実行する環境
LXCコンテナでテストするためにコンテナをさくっと作れる
puppetマニュフェスト書いた
丁度同じタイミングでDocker
・テストツールさがし
既存のものでよさげなもの
rspec-puppet
Chefはテストツールいろいろ(きゅーかんばー)
・自前でつくることにした
・Serverspec誕生
当時の同僚(@hiboma)がLXCのコンテナをテストするコードをRSpecで書いていた
パクって汎用的に
・初期のServerspec
Redhat SSH
→@tkmrさん複数OS
@raphinkさんがバックエンド切り替え
■本当に広く使われているの?
・Serverspecの認知度
Black Duck Open Source Rookies of the year 2013
Docker,InfluxDB,Appiumと並んで
Thought Works Technology Radar 2014
Provisioning Testingの項目にServerspec
・雑誌
Web+DB Press vol75,76,80,81
・いとうなおやさんに取り上げられた→流行る
・Test-Driven Infrastructure with Chef,2nd Edition
Chef
■海外での反応
・ChefConf
■なぜServerspecは成功したのか
・能動的な要因
別領域で成功しているプラクティスを持ち込む
ソフトウェア開発の世界のプラクティス
テスト駆動開発
継続的インテグレーション
同じ用語を使うとイメージしやすい
・名前重要
Server+RSpecという直球な名前
名前から何をするものなのかが類推しやすい
・英語ドキュメント
日本国外でも広く認知してもらう場合重要
・メジャーなキーワード/プロダクトにのっかる
PuppetやChef
・ドキュメントのわかりやすさ
ざっと斜め読みしただけで何ができるツールかわかる
・ツール自体のシンプルさ
・シンプルだけど、拡張しやすい
Unix哲学 Keep It Simple Stupid
・他ツールとの組み合わせ
beaker-rspec
vagrant-serverspec
・エージェントレス
テスト対象はSSHでアクセスできればOK
・使うまでの敷居を下げる
1.8.7以降をサポート
・自分ひとりでやり過ぎない
ほしい機能があれば自分で実装してくれ
■技術トレンド要因
・サーバー構成管理ツールの成熟
puppetから9年
・Vagrantの普及
手元でVMを動かせる
・Chef界隈でのテストの盛り上がり
・JenkinsやCI as a Serviceの普及
・Githabの普及
・まとめ
構成管理仮想化テストCI
GitHubがこのトレンドをさらに後押し
■まとめ
・あえて隙を作る
・トレンドにのる
・影響力のある人
→技術トレンドを生むとか考えない
自分のほしいもの、面白いと思うものを自分のためにつくる
自分が作って公開したもの
Shut the fuck up and write some code
Openness is our driver for excellence
知之者不如好之者好之者不如楽之者