$30 off During Our Annual Pro Sale. View Details »

Digdag x Dockerでモダンなバッチ処理環境を構築

Digdag x Dockerでモダンなバッチ処理環境を構築

http://morizyun.github.io/digdag/ に入門記事を書きましたのでよければこちらも読んでみてください!

morizyun

June 09, 2017
Tweet

More Decks by morizyun

Other Decks in Programming

Transcript

  1. Digdag x Dockerでモダンな

    バッチ処理理環境を構築
    twitter: @zyunnosuke
    blog: http://morizyun.github.io

    View Slide

  2. 今⽇日⾔言いたいこと
    • Treasure DataのOSS「Digdag」の紹介
    • DigdagとDockerを組み合わせてバッチ環境を構築
    • 感想は環境構築はちょっと苦労。けど使いこなせば便便利利

    View Slide

  3. Digdagって何?
    • Digdag = ワークフローエンジン
    • ワークフローエンジン = 順番に予め定義した処
    理理を実⾏行行していく仕組み

    View Slide

  4. Digdagの概要
    • タスクをYAML(.dig) ベースで定義
    • 依存関係のあるタスクや、並列列でのタスク実⾏行行を定
    義できる(バッチ間の依存を可視化)
    • Dockerベースでタスクを実⾏行行できる
    • gitでバージョン管理理やコードレビューできるので
    ソフトウェア開発のプラクティスが使える

    View Slide

  5. ワークフローの定義(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)

    View Slide

  6. 柔軟なタスクの定義
    • `if>:` 条件を満たす場合のみ実⾏行行
    • `s3_wait>:` AWS S3にファイルが設置されるのを待

    • `pg>:` PostgreSQLでSQLを実⾏行行します
    • `bq>:` BigQueryでクエリを実⾏行行して結果をテーブル
    に保持

    View Slide

  7. スケジュール実⾏行行もできる
    timezone: Asia/Tokyo
    schedule:
    minutes_interval>: 1
    +current_date:
    sh>: echo `date`
    ← cron形式も可能
    ← タイムゾーン

    View Slide

  8. Docker ベースで実⾏行行できる
    • Dockerベースでお望みの環境で処理理を実⾏行行できる
    _export:
    docker:
    image: ubuntu:14.04
    +step1:
    py>: tasks.MyWorkflow.step1
    ← Dockerイメージ

      を指定

    View Slide

  9. グループごとにタスクをまとめる
    • Topレベルで prepare => analyze => evaluate
    • `call>: another_workflow.dig`で他のタスク(dig)を呼び出す

    View Slide

  10. Digdag Server
    • `digdag push`でサーバにprojectを登録
    • 複数台のAgentが必要なタイミングでタスクを実⾏行行

    View Slide

  11. タスクの実⾏行行状況をWeb画⾯面で確認
    • 画⾯面からログの確認や、タスク再実⾏行行とかできる

    View Slide

  12. 感想
    • ワークフローでやりたいことは⼀一通りで
    きる
    • 環境構築のコストがそれなりにかかった
    • 最新バージョン 0.9.12なので、まだまだ
    PRのチャンス!!

    View Slide

  13. 宣伝
    • ⼊入⾨門のブログ記事書きました!
    • http://morizyun.github.io/digdag/

    View Slide

  14. Appendix

    View Slide

  15. デプロイフロー
    masterにマージ digdag push
    (タスク実⾏行行)
    docker run
    スクリプト郡
    Digdagリポジトリ
    docker push

    View Slide