http://morizyun.github.io/digdag/ に入門記事を書きましたのでよければこちらも読んでみてください!
Digdag x Dockerでモダンな バッチ処理理環境を構築twitter: @zyunnosukeblog: http://morizyun.github.io
View Slide
今⽇日⾔言いたいこと• Treasure DataのOSS「Digdag」の紹介• DigdagとDockerを組み合わせてバッチ環境を構築• 感想は環境構築はちょっと苦労。けど使いこなせば便便利利
Digdagって何?• Digdag = ワークフローエンジン• ワークフローエンジン = 順番に予め定義した処理理を実⾏行行していく仕組み
Digdagの概要• タスクをYAML(.dig) ベースで定義• 依存関係のあるタスクや、並列列でのタスク実⾏行行を定義できる(バッチ間の依存を可視化)• Dockerベースでタスクを実⾏行行できる• gitでバージョン管理理やコードレビューできるのでソフトウェア開発のプラクティスが使える
ワークフローの定義(YAML)_export:foo: 1!include : 'config/mysql.dig'_error:sh>: tasks/runs_when_workflow_failed.sh+step1:sh>: tasks/shell_sample.sh+step2:rb>: MyWorkflow.step2← Linuxのexportみたいなの← エラー時の通知← タスク← Rubyのコードを実⾏行行(要require)
柔軟なタスクの定義• `if>:` 条件を満たす場合のみ実⾏行行• `s3_wait>:` AWS S3にファイルが設置されるのを待つ• `pg>:` PostgreSQLでSQLを実⾏行行します• `bq>:` BigQueryでクエリを実⾏行行して結果をテーブルに保持
スケジュール実⾏行行もできるtimezone: Asia/Tokyoschedule:minutes_interval>: 1+current_date:sh>: echo `date`← cron形式も可能← タイムゾーン
Docker ベースで実⾏行行できる• Dockerベースでお望みの環境で処理理を実⾏行行できる_export:docker:image: ubuntu:14.04+step1:py>: tasks.MyWorkflow.step1← Dockerイメージ を指定
グループごとにタスクをまとめる• Topレベルで prepare => analyze => evaluate• `call>: another_workflow.dig`で他のタスク(dig)を呼び出す
Digdag Server• `digdag push`でサーバにprojectを登録• 複数台のAgentが必要なタイミングでタスクを実⾏行行
タスクの実⾏行行状況をWeb画⾯面で確認• 画⾯面からログの確認や、タスク再実⾏行行とかできる
感想• ワークフローでやりたいことは⼀一通りできる• 環境構築のコストがそれなりにかかった• 最新バージョン 0.9.12なので、まだまだPRのチャンス!!
宣伝• ⼊入⾨門のブログ記事書きました!• http://morizyun.github.io/digdag/
Appendix
デプロイフローmasterにマージ digdag push(タスク実⾏行行)docker runスクリプト郡Digdagリポジトリdocker push