- サーバのバッチ処理の管理に「ワークフローエンジン」というのが良さそうな感じ。企業情報システムで「ワークフローシステム」というと、稟議書等で役職者の承認を管理するものと思ってしまうが、ここでは「複数タスクを依存関係に従って実行、状況管理するツール」くらいの意味で、最近特にデータ分析の前処理にあたる「データパイプライン」を扱うものを指すことがある。自分の管理したいジョブもまさにこれ。
- タスクの依存関係の構造はDAG(Directed acyclic graph, 有向非巡回グラフ)等と言われて研究されているみたい。
- ジョブ管理したいサーバはlinuxとWindows。ワークフローエンジンはapache airflowというのがメジャーな感じだけど、Windowsサーバには対応してないみたい。さらに調べて、公式ドキュメントにWindowsの記載もあるdigdagを使ってみることにする。
- digdagにはserver modeとclient modeがある。server mode はクライアントからの接続を受け付ける。Webの管理画面の表示も行える。デフォルトのポートは65432だが、セキュリティのこともあるので変えた方が良いかも。
- client mode は他のサーバにジョブの登録をしたり、他のサーバに登録してあるジョブを起動したりできる。
- digdagはjava8の実行環境がセットアップしてあれば単一ファイルで動く。必要に応じて他の設定ファイル等を作成する必要があるが、インストールが簡単なのがこのツールの特徴。そのためかWindows版は単一ファイルdigdag.batの中にいろいろ詰め込まれている感じだけど、細かいことは気にしない。
- Command reference — Digdag 0.9.42 documentation
- ただしjava8の実行環境をどうやって用意するかは、javaに詳しくない人には少し難しいかも。自分も詳しくなくて、当初はjavaの新しいバージョンなら上位互換だろうとタカを括ってjava14で試したらdigdag起動しなかった。
- それで困って、ネットを検索して見つけた下記のページを参考にしてAdopt Open JDKのjava8を使った。Amazon Corretoという環境もあるみたい。
- digdag serverを起動すると、ジョブ名さえわかればよそからそのジョブを起動できる。これはすごく便利だけどどこからでも起動可能というのはさすがに危険で、認証をつけたいのだけど、digdag本体にbasic認証をつけるという手順は自分が試した範囲ではうまくいかなかった。試したのは下記だが、自分が何か勘違いしているのかもしれない。
- 結局、nginxを別に立ててリバースプロクシとし、digdagのWeb画面はnginx経由でアクセスする。digdag serverはファイアーウォール設定でnginxサーバ以外からのアクセスを禁止し、nginxサーバにbasic認証をつけた。
- 以降、また何かあれば追記予定。
More than 5 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme