ビッグデータ分析のクラウドサービスを提供する米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を使ったビッグデータの分析を考えている顧客の多くは、様々なアプリケーションが生み出すデータを、様々な手法で加工、分析したいというニーズを持っている。データの生成から活用に至るまでのステップを可能な限り自動化する。それがDigdagを開発したモチベーションだ」。古橋氏はDigdagの開発動機をそう説明する。
ワークフローを管理するソフト自体は昔から存在する。日本製ソフトとしては日立製作所の「JP1」が著名だし、メインフレーム世代であれば「JCL」が思い浮かぶだろう。古橋氏が開発を主導する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』などのソースコード管理サービスを使って履歴管理などをするのが望ましい。そうすればワークフローのどこに修正を加えたかなどが、後から把握できる」。古橋氏はワークフローの「コード化」の意義をこう説明する。