Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Digdag x Dockerでモダンなバッチ処理環境を構築
morizyun
June 09, 2017
Programming
2
19k
Digdag x Dockerでモダンなバッチ処理環境を構築
http://morizyun.github.io/digdag/
に入門記事を書きましたのでよければこちらも読んでみてください!
morizyun
June 09, 2017
Tweet
Share
More Decks by morizyun
See All by morizyun
個人開発におすすめの Next.js 技術スタック
morizyun
1
200
継続的個人開発のコツ
morizyun
1
35k
GitLab CI x Docker のススメ
morizyun
15
4.7k
Mini-Heroku "Dokku"
morizyun
0
210
Overcommit & Pronto Introduction
morizyun
0
480
I Enjoyed First English LT @ RedDotRubyConf
morizyun
0
1.6k
Learning Through Blogging: Ruby Blogging Benefits
morizyun
0
670
英語で広がるRubyの世界
morizyun
4
2.1k
20160401_RedDotRubyConfのCFPに応募してみた
morizyun
1
1.4k
Other Decks in Programming
See All in Programming
tidy_rpart
bk_18
0
390
CDKでValidationする本当の方法 / cdk-validation
gotok365
1
140
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
0
320
Cloudflare Workersと状態管理
chimame
2
420
Form実装基本を学び直してみた
hyugatsukui
0
200
AWSとCPUのムフフな関係
cmdemura
0
430
PHPDocにおける配列の型定義を少し知る
shimabox
1
110
ポケモンで学ぶiOS 16弾丸ツアー 🚅
giginet
PRO
1
600
T3 Stack and TypeScript ecosystem
quramy
3
630
量子コンピュータ時代のプログラミングセミナー / 20221222_Amplify_seminar _route_optimization
fixstars
0
240
フロントエンドで 良いコードを書くために
t_keshi
3
1.6k
Amazon QuickSightのアップデート -re:Invent 2022の復習&2022年ハイライト-
shogo452
0
200
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
130
5.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
830
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
Unsuck your backbone
ammeep
659
56k
Debugging Ruby Performance
tmm1
67
11k
Scaling GitHub
holman
453
140k
Automating Front-end Workflow
addyosmani
1351
200k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
254
12k
Designing Experiences People Love
moore
130
22k
Fireside Chat
paigeccino
16
1.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
32
6.7k
Transcript
Digdag x Dockerでモダンな バッチ処理理環境を構築 twitter: @zyunnosuke blog: http://morizyun.github.io
今⽇日⾔言いたいこと • 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/Tokyo schedule: 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