36
Jenkins による レポートスクリプト管理 #TokyoR45 さりんじゃー @salinger001101

Jenkins によるレポートスクリプト管理

Embed Size (px)

Citation preview

Page 1: Jenkins によるレポートスクリプト管理

Jenkins  によるレポートスクリプト管理

#TokyoR45

さりんじゃー

@salinger001101

Page 2: Jenkins によるレポートスクリプト管理

自己紹介•  名前:  さりんじゃー•  年齢:  26才

•  最近のお仕事内容•  Ruby  on  Rails  で分析結果提示のためのシステム構築。•  インフラ環境整備(AWS)。•  激重の  R  のスクリプトを  Python  に移植。

都合のいい男  守備範囲がだいぶ広がってきて良い感じ。

                           〜  2014/03 新潟県の某大学で修士(工学) 取得。

2014/04  〜  2014/12 某ソシャゲで有名なD社でゲーム分析。

2015/01  〜様々なものを対象に(直近は金融等)分析をやろうとしているとこでデータエンジニア。

社会人1年目

Page 3: Jenkins によるレポートスクリプト管理

みなさん

Page 4: Jenkins によるレポートスクリプト管理

日々のレポート配信

Page 5: Jenkins によるレポートスクリプト管理

どうやって実行してますか?

Page 6: Jenkins によるレポートスクリプト管理

①  手動で実行

Page 7: Jenkins によるレポートスクリプト管理

レポート出してー

おk

ディレクター

Page 8: Jenkins によるレポートスクリプト管理

レポート出してー

お…おk

レポート出してー

レポート出してー

他の分析者ディレクター1

ディレクター2

Page 9: Jenkins によるレポートスクリプト管理

レポート出してー

   う…

レポート出してー

レポート出してーレポート出してー

レポート出してー

レポート出してー

レポート出してー

Page 10: Jenkins によるレポートスクリプト管理
Page 11: Jenkins によるレポートスクリプト管理

定期的に実行するなら自動化しようよ!

Page 12: Jenkins によるレポートスクリプト管理

②  crontabで実行

Page 13: Jenkins によるレポートスクリプト管理

crontab  とは?

Page 14: Jenkins によるレポートスクリプト管理

設定した時間に定期的にコマンドを実行してくれる

※  Unix系OSで使えます

Page 15: Jenkins によるレポートスクリプト管理

   こ…これで…

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 ……………… ………………

……………… ……………… ……………… ………………

Page 16: Jenkins によるレポートスクリプト管理

自動化できた!

Page 17: Jenkins によるレポートスクリプト管理

だがしかし…

Page 18: Jenkins によるレポートスクリプト管理

…今日は全休です

◯◯さんがいつも出力してる××レポート出力されてないから確認よろ

ケース1:

Page 19: Jenkins によるレポートスクリプト管理

ど…どれだ?

ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか他人にはわからん

今日は全休です

◯◯さんがいつも出力してる××レポート出力されてないから確認よろ

crontab ……………… ……………… ……………… ……………… ………………

crontab ……………… ……………… ………………

report05.R ………………

crontab ……………… ……………… ……………… ……………… ………………

Page 20: Jenkins によるレポートスクリプト管理

重たいスクリプト実行!

ケース2:

じ…

実行!

Page 21: Jenkins によるレポートスクリプト管理

重たいスクリプト実行!

ケース2:複数のスクリプトの自動実行タイミング被ってサーバー過負荷で死亡

じ…

実行!

Page 22: Jenkins によるレポートスクリプト管理

ケース3:

今日のレポート出てないよー?

…あれ?

Page 23: Jenkins によるレポートスクリプト管理

ケース3:レポート出てなくても気付かない場合がある

今日のレポート出てないよー?

エ…エラーで  死んでる…

Error: Warning:

Fatal:

Page 24: Jenkins によるレポートスクリプト管理

 出す…出すからちょい待って…

あのレポートパラメータちょっと変えてもう1回出してよー急ぎでー

ケース4:いつものと微妙に違う出力を求められる

Date:  2015-01-16,  ID:  10010  (いつもの)+Date:  2015-01-14,  ID:  10010  (追加)+  Date:  2015-01-16,  ID:  10020  (追加)

Page 25: Jenkins によるレポートスクリプト管理
Page 26: Jenkins によるレポートスクリプト管理

そこで

 の出番

Page 27: Jenkins によるレポートスクリプト管理

とは?

• 継続的インテグレーションツール• ビルドの自動化• テストの自動化• メトリクスの自動取得    etc.

社内でエンジニアの人がアプリ開発に使ってたりしますよね

Page 28: Jenkins によるレポートスクリプト管理

とは?

•  オープンソースの継続的インテグレーションツール•  ビルドの自動化•  テストの自動化•  メトリクスの自動取得        etc.

実はこれ「すごい  crontab」として使える

Page 29: Jenkins によるレポートスクリプト管理

スクリプトの一元管理

ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか一目瞭然

•  ブラウザから見れるよ!•  ジョブのグループ化も簡単だよ!•  権限設定もちゃんと出来るよ!

Page 30: Jenkins によるレポートスクリプト管理

ジョブのスケジューリング

ケース2:自動実行タイミングをきちんとスケジューリングしてくれる

•  アバウトな指定可  (9時ぐらいとか)

batch01  ||  batch02

•  空いてるサーバで自動実行可能

Page 31: Jenkins によるレポートスクリプト管理

エラー時の対応

ケース3:エラー時にメールで通知できるのですばやい障害対応が可能に

•  スクリプト側でのエラー時処理が楽になります•  エラー時に他のスクリプト実行したりも可能

Page 32: Jenkins によるレポートスクリプト管理

パラメータ付きでも再実行が楽

ケース4:いつもと微妙に違うレポートでも簡単に再出力できる

ここに日付とID入れてボタン押したら

自分で作れるよ

おk自分でやるわ

Page 33: Jenkins によるレポートスクリプト管理

やばい!

 便利かも!

と思ったら?

Page 34: Jenkins によるレポートスクリプト管理

Jenkins

続きはWebで

Page 35: Jenkins によるレポートスクリプト管理

まとめ

•  「すごいcrontab」として使えるよ•  レポートスクリプトの一元管理•  ジョブのスケジューリング•  エラー時対応が楽•  再実行も容易

Page 36: Jenkins によるレポートスクリプト管理

参考資料

•  Jenkins  公式,http://jenkins-ci.org

•  日本  Jenkins  ユーザー会,http://build-shokunin.org