Upload
tatsuya-tojima
View
5.626
Download
7
Embed Size (px)
Citation preview
Jenkins によるレポートスクリプト管理
#TokyoR45
さりんじゃー
@salinger001101
自己紹介• 名前: さりんじゃー• 年齢: 26才
• 最近のお仕事内容• Ruby on Rails で分析結果提示のためのシステム構築。• インフラ環境整備(AWS)。• 激重の R のスクリプトを Python に移植。
都合のいい男 守備範囲がだいぶ広がってきて良い感じ。
〜 2014/03 新潟県の某大学で修士(工学) 取得。
2014/04 〜 2014/12 某ソシャゲで有名なD社でゲーム分析。
2015/01 〜様々なものを対象に(直近は金融等)分析をやろうとしているとこでデータエンジニア。
社会人1年目
みなさん
日々のレポート配信
どうやって実行してますか?
① 手動で実行
レポート出してー
おk
俺
ディレクター
レポート出してー
お…おk
レポート出してー
レポート出してー
他の分析者ディレクター1
ディレクター2
レポート出してー
う…
レポート出してー
レポート出してーレポート出してー
レポート出してー
レポート出してー
レポート出してー
定期的に実行するなら自動化しようよ!
② crontabで実行
crontab とは?
設定した時間に定期的にコマンドを実行してくれる
※ Unix系OSで使えます
こ…これで…
5 0 * 3-5 4 /scripts/01.R
15,30 06 * * 2 /scripts/02.R
00 14 * * */scripts/03.R
0 8 * * */scripts/04.R
0 9 * * */scripts/05.R
0 15 * * */scripts/06.R
0 15 * * */scripts/07.R
crontab ……………… ………………
……………… ……………… ……………… ………………
自動化できた!
だがしかし…
…今日は全休です
◯◯さんがいつも出力してる××レポート出力されてないから確認よろ
ケース1:
ど…どれだ?
ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか他人にはわからん
今日は全休です
◯◯さんがいつも出力してる××レポート出力されてないから確認よろ
crontab ……………… ……………… ……………… ……………… ………………
crontab ……………… ……………… ………………
report05.R ………………
crontab ……………… ……………… ……………… ……………… ………………
重たいスクリプト実行!
ケース2:
じ…
実行!
重たいスクリプト実行!
ケース2:複数のスクリプトの自動実行タイミング被ってサーバー過負荷で死亡
じ…
実行!
ケース3:
今日のレポート出てないよー?
…あれ?
ケース3:レポート出てなくても気付かない場合がある
今日のレポート出てないよー?
エ…エラーで 死んでる…
Error: Warning:
Fatal:
出す…出すからちょい待って…
あのレポートパラメータちょっと変えてもう1回出してよー急ぎでー
ケース4:いつものと微妙に違う出力を求められる
Date: 2015-01-16, ID: 10010 (いつもの)+Date: 2015-01-14, ID: 10010 (追加)+ Date: 2015-01-16, ID: 10020 (追加)
そこで
の出番
とは?
• 継続的インテグレーションツール• ビルドの自動化• テストの自動化• メトリクスの自動取得 etc.
社内でエンジニアの人がアプリ開発に使ってたりしますよね
とは?
• オープンソースの継続的インテグレーションツール• ビルドの自動化• テストの自動化• メトリクスの自動取得 etc.
実はこれ「すごい crontab」として使える
スクリプトの一元管理
ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか一目瞭然
• ブラウザから見れるよ!• ジョブのグループ化も簡単だよ!• 権限設定もちゃんと出来るよ!
ジョブのスケジューリング
ケース2:自動実行タイミングをきちんとスケジューリングしてくれる
• アバウトな指定可 (9時ぐらいとか)
batch01 || batch02
• 空いてるサーバで自動実行可能
エラー時の対応
ケース3:エラー時にメールで通知できるのですばやい障害対応が可能に
• スクリプト側でのエラー時処理が楽になります• エラー時に他のスクリプト実行したりも可能
パラメータ付きでも再実行が楽
ケース4:いつもと微妙に違うレポートでも簡単に再出力できる
ここに日付とID入れてボタン押したら
自分で作れるよ
おk自分でやるわ
やばい!
便利かも!
と思ったら?
Jenkins
続きはWebで
まとめ
• 「すごいcrontab」として使えるよ• レポートスクリプトの一元管理• ジョブのスケジューリング• エラー時対応が楽• 再実行も容易
参考資料
• Jenkins 公式,http://jenkins-ci.org
• 日本 Jenkins ユーザー会,http://build-shokunin.org