ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

JTF2014に行って来た その1

昨日、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
知之者不如好之者好之者不如楽之者