Jenkins + AWSで
   並列テスト
        2012.11.23
第2回 岡山Amazon Web Service勉強会
         山本 和久
自己紹介

• 山本 和久
•   岡山Ruby/Ruby on Rails勉強会

• @kazuhisa1976
• 株式会社リゾーム
読書会が熱い

• @patorashさんが主催
• メタプログラミングRuby読書会
• The RSpec Book読書会
作ったもの
リゾームでやってること

• 開発基盤整備
• Railsフレームワークの拡張
• テストフレームワークの整備
• デプロイ環境の調整
よくある流れ
1. 勉強会に参加

2. 新しい技術を発見

3. テンション上がる

4. ビール飲む

5. テンションが上がる

6. 翌日新技術が投入される
今日のお話

• 開発チームのテストの考え方
• Jenkinsで並列テスト
• AWS
   (おまけ)
Test
• 自社メインプロジェクトでのテスト数


RSpec           Cucumber

   368ファイル          106ファイル
   46,079行          18,544行
Testの実行時間
• 普通に実行
 $ bundle exec rake spec
 $ bundle exec rake cucumber




         分からない...
Testの実行時間

• Parallel Tests(4cores 8threads)
  Rspec 30分ぐらい
  Cucumber 1時間ぐらい

• テスト結果が分かりづらい...
開発チームのルール

• テストが通らないとリリース用ブラン
 チにpushされない


  Develop     Master
ミッション
• お客様に正しく動くものを早く提供する
Testの実行時間
• 並列実行
 • Jenkins
• もっとスピードを!
 • iMac(Core i7 2.8GHz/4C8T)
 • MacBookPro(Core i7 2.7GHz/2C4T)
 • Dell T110 II(Xeon E31230 3.2GHz/4C8T)
Jenkins
• 継続的インテグレーションツール
• ビルド
• テスト
• デプロイ
• バッチ処理
Jenkins

• Parallel Testsより細やかな並列制御
• あらゆる通知方法
• 豊富なPlugin
Jenkins
Jenkins
AWS

 これから話すことは
まだ実用には至ってません
AWS
ぼくのかんがえたさいきょうのテスト環境
AWS


そもそもなぜAWSなのか?
AWS

• 必要なスペック
• 必要なインスタンス数
• すぐさま用意できる
JenkinsでAWS
• Amazon EC2 Pluginを使えば?
JenkinsでAWS

• Amazon EC2 Pluginは新しいインスタン
 スを立てることしかできない

• Railsは環境構築が大変
• 毎回同じEBSを使いまわしたい
JenkinsでAWS
1. Amazon EC2 API Tools
2. インスタンスidを指定してstopしてるイ
  ンスタンスを起動

3. APIを使用してpublic DNSを取得

4. Slave制御用プログラムをsshで送り込む
気をつけること
• 1時間単位の課金
• むやみにインスタンスを停止させない
• 1時間仕事しなかったら自分自身を停止
 させる
問題点

• サーバー毎の速度差
• 価格に見合ったパフォーマンスか?
• テストの種類にマッチしてるか
参考サイト
• Jenkins@EC2 による 継続的インテグレーション




 http://www.slideshare.net/bluepapa32/jenkinsec2
ご清聴ありがとうございました

Jenkins + awsで並列テスト