ビッグデータ分析のクラウドサービスを提供する米Treasure Dataが、複数のクラウドを連携して一つのデータ処理を実現する「ワークフロー管理」のサービス「Treasure Workflow」を開始した。同社が開発するOSS(オープンソースソフトウエア)「Digdag」を使用する。

 「Microsoft Azure」で稼働するアプリケーションのログや「Facebook Ads」の広告閲覧データを「Amazon S3」に蓄積して、「Amazon Machine Learning」で機械学習し、分析結果を「Treasure Data」や「Google BigQuery」で集計する――。Treasure WorkflowやDigdagが実現する複数クラウド(マルチクラウド)にまたがるワークフロー管理とは、このようなものだ。

 Treasure Dataは2016年11月29日に、DigdagをOSSとして正式に公開してユーザーからのフィードバックを受け始めた。Treasure Workflowのサービスも同日に開始した。Treasure Dataの共同創業者でDigdagを開発した古橋貞之氏への取材に基づき、Digdagの開発動機やDigdagの仕組みについて解説する(写真)。

写真●米Treasure Dataの共同創業者の古橋貞之氏
写真●米Treasure Dataの共同創業者の古橋貞之氏
[画像のクリックで拡大表示]

 「Treasure Dataを使ったビッグデータの分析を考えている顧客の多くは、様々なアプリケーションが生み出すデータを、様々な手法で加工、分析したいというニーズを持っている。データの生成から活用に至るまでのステップを可能な限り自動化する。それがDigdagを開発したモチベーションだ」。古橋氏はDigdagの開発動機をそう説明する。

 ワークフローを管理するソフト自体は昔から存在する。日本製ソフトとしては日立製作所の「JP1」が著名だし、メインフレーム世代であれば「JCL」が思い浮かぶだろう。古橋氏が開発を主導するDigdagと従来のソフトとの違いは「Digdagはクラウドを前提に、ゼロベースで開発した」(古橋氏)点だ()。

表●Digdagの主なポイント
ポイント概要
クラウド前提クラウドのAPIを呼び出してサービスを制御。エージェントソフトは不要
ワークフローの「コード化」ワークフローの内容は「YAML」形式で記述。更新履歴などは「GitHub」で管理を推奨
プラグイン構造各種サービスに対応する「オペレーター」をユーザーが自由に開発したり追加したりできる
「Docker」活用特定のミドルウエアが必要となるスクリプトを実行する場合は、その環境を「Dockerコンテナ」を使ってデプロイする

クラウドのAPIを活用、エージェントは不要

 クラウドを前提とするDigdagは、クラウドが備えるAPI(アプリケーション・プログラミング・インタフェース)を呼び出すことで、ワークフローを制御する。現在Digdagが対応する「Amazon Web Services(AWS)」や「Microsoft Azure」「Google Cloud Platform(GCP)」といった主要なクラウドは、システム管理用のAPIを備えている。DigdagはそれらのAPIを呼び出すことで、サービスを起動したり、データ処理のジョブを実行したりする。

 従来のワークフロー管理ソフトは、管理対象のサーバーにエージェントソフトを導入し、エージェントソフト経由でそれらを制御していた。Digdagではそのようなエージェントソフトを導入する必要が無い。Digdagの本体であるJavaプログラムを稼働するサーバーがあれば、それだけでワークフローを制御できる。Treasure Dataが11月29日に開始した「Treasure Workflow」は、DigdagのプログラムをTreasure Dataのクラウドで稼働し、それをサービスとして提供するものになる。

ワークフローの「コード化」を実現

 ワークフローの内容は「YAML」形式のコードとして記述する。ユーザーはDigdagの関数「オペレーター」を呼び出すコードを記述してワークフローを定義していく。Digdagのオペレーターとは、各種のクラウドサービスを制御するコマンドのようなもの。例えばAWSのデータウエアハウス(DWH)である「Amazon RedShift」でクエリーを実行する場合は、「redshift>」というオペレーターを呼び出して、実行したいクエリーを指定する。古橋氏は「開発者だけでなく、現場のマーケティング担当者でも記述できるシンプルな文法にした」と説明する。

 ワークフローの各処理(タスク)に順序を設定したり、条件に基づいた分岐を設定したりすることも可能だ。「1日分のデータがたまったらワークフローを開始する」など、ユーザーが様々な条件を指定できる。エラー処理についても「失敗したらリトライする」「失敗したらアラートを出す」「途中からやり直す」などが指定可能。

 「ワークフローを記述したYAML形式のコードは、『GitHub』などのソースコード管理サービスを使って履歴管理などをするのが望ましい。そうすればワークフローのどこに修正を加えたかなどが、後から把握できる」。古橋氏はワークフローの「コード化」の意義をこう説明する。