-
よしだ
- twitter: @grimrose
-
とある人材紹介会社のマーケティング部門のデータエンジニア
-
好きな言語: Groovy
-
好きなIDE: IntelliJ IDEA
- 事業KPIの可視化を行うためのWebアプリケーションの設計から運用
- Scalaを使って日次や月次の集計バッチを実行するアプリケーションの作成
- 帳票や外部APIなどからデータベースへデータを投入するツールの作成
- 部門の日常業務を改善するためのちょっとしたツールの作成
Job Schedulerを利用中。
全てをJob Schedulerに任せるのが難しくなってきた。
XMLを人間が管理するのは難しい。
ローカルで試せないので、本番で試行錯誤。
-
日本語化対応済
-
インストールが簡単
-
GUIでジョブの定義などが作れる
- ただし、XMLで吐き出される
-
ジョブの実行にjavascriptやshellscriptが使える
- ただし、XMLのCDATAに書くので、動かすまで分からない
-
ジョブ、フロー、スケジューリング設定ファイルがXML
-
RESTのリクエストのbodyがXML
-
公式ドキュメントがXML
- 新しいドキュメントはJIRAに移行
-
Agentを使えば複数台で実行可能だが、無償版は1台のみ
-
標準出力にログを出しすぎるとエラー扱いされる
-
標準エラーに出力されるとエラー扱いされる
- エラーじゃないのに標準エラーに出力するとエラー扱いに
ignore_stderr
のオプションで回避出来るが、exit codeだけで判定する必要がある
スケジューリングはJob Schedulerへ。ワークフローの定義はDigdagへ。
Digdagはlocal mode
で動かしています。
Macと本番環境でpararell
の同時実行数が違うので、digdagのconfigにagent.max-task-threads=N
を設定して実行してました。
v0.9.13以降は、digdag run (local mode) で並列実行数を制御するにある通り コマンドオプションで渡せるようになるそうです。
-
ymlなのでsyntaxのサポートが効きやすい
-
既存のshファイルをそのまま
sh operator
に渡せる -
プログラマブルにしたければ、
rb operator
かpy operator
を使えばいい -
embulkと組み合わせて -> とあるマーケティング部隊でのembulkの活用事例
-
include
があるおかげで、ジョブやタスクの粒度を調整しやすい
-
sh operator
のstdoutもログに出せるようにしてほしい -
rb operator
の実行環境が固定 -
サーバーにインストールされているrubyに依存したくない
- dockerが使えない環境なので、[feature-request] rb operator supports bundler #318が実現されると嬉しい
-
operatorでエラーになっても原因が分かりにくい
- エラーになったときのタスク名をerrorオブジェクトに持ってほしい
Digdagもserver, client, uiの構成で試したい。
また、より良いワークフローライフを夢見て、以下のプロダクトも検証中。
- Apache Airflow
- AWS Step Functions
- AWS Data Pipeline
ローカルへの導入が簡単なので、直ぐに試せたのが良かった。
cronでcrontab -r
で設定をふっ飛ばしたことがある人、ログを/dev/null
に捨ててる人にこそおすすめしたい。
local mode
があるおかげで、既存のシステムに組み込むことが出来てよかった。