現在、弊社では長年運用され続けているレポート基盤のリニューアルを昨年から続けています。DigdagとJenkinsを利用した仕組みを検討しました。本記事ではその一例をご紹介します。あらゆるサービスでデータの蓄積、分析、活用が日常的に行われています。エンジニアでない人にコマンド実行でレポートを生成してもらうのは難しいです。そこで、弊社ではJenkinsをレポート生成UIとして使ってきました。エンジニアでない人にも使える画面を手軽に作ることができます。レポート生成ジョブが大量にあります。今回はこのJenkinsのUIはそのままにバッチはDigdagで実行させることにしました。DataがOSSとして公開しているワークフローエンジンです。yamlで簡潔に記述して管理できます。ワークフローの実行環境としてDockerを利用できるので、実行環境が変化して実行結果が変わったりする心配がありません。弊社では、次期レポート基盤としてこのDigdagサーバーをAWS上に構築し、現在オンプレ環境で動いているバッチを移行する検証を進めています。これらを解決するのが目的です*1。UIからワークフローをオンデマンドで実行させることができます。レポートがほしいエンジニアではない人に適宜手動で実行してもらうことを考えた場合、2点課題がありました。ワークフローの実行にパラメータを指定できない認証、ユーザ管理機能などがデフォルトでは用意されていない*2ので、誰でもどのワークフローでも容易に実行できてしまうこのUI部分は使わず、Jenkinsから操作できるようにします。パラメータは指定できない。APIを通して直接ワークフローに対する操作が可能です*3。以下のようなコマンドでDigdagサーバに対して指定したワークフローの実行を指示できます。board_ids=${board_ids}Jenkinsのジョブにおいてこのコマンドを実行させればDigdagに対してワークフローの実行を指示できます。デフォルトのテキストパラメータは自由に入力できてしまいます。エンジニア以外が使うことを考えると、Digdagに投げる手前でのvalidationが必要です。使ってvalidationします。マッチしない場合にエラーメッセージを表示させられます。日付パラメータの設定例カンマ区切りの入力例パターンにマッチしない場合に指定したメッセージを表示させられます。実行結果の通知Jenkinsのジョブ自体は、Digdagへワークフローの実行を登録するだけなので、Digdagサーバに障害がない限り、基本的にジョブとしては成功します。ワークフローの成否は別途通知が必要です。ことにしましたが、メールやその他の通知も必要に応じて追加する予定です。レポートのダウンロード先を通知します。UIを実現できました。hiring!冒頭で紹介したように、弊社では長年運用してきたレポート基盤を大きくリニューアルしている最中です。リニューアルには課題が山積みで、一緒に進めていける仲間を募集中です。お気軽にお問い合わせください。jobs.m3.com*1:Dockerに関してはECSで実行させることも考えています。APIを叩いているだけです。*4:当初Digdagのpluginを使っていましたが、諸事情により、別途slack通知部分は実装しました。AI・機械学習チームの岩月です。Fallにて、エム...2019-09-30機械学習プロジェクト向けPipelineライブラリgokartを用いた開発と運用こんにちは。月別アーカイブ注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。