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

Post on 18-Jul-2015

5.626 Views

Category:

Engineering

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related