肉球でキーボード

MLエンジニアの技術ブログです

ワークフローオーケストレーションの歴史

Data Engineering Study #23 Data orchestration 特集の発表「ワークフローオーケストレーション入門」から、ワークフローオーケストレーションの歴史について記事にまとめました。

概要

近年データエンジニアリングの周辺技術が話題に上がるようになり、ワークフローオーケストレーションが注目を集めています。

workflow orchestration関連語のGoogle Trend

上図はワークフローオーケストレーションの関連ワードのGoogle Trendです。

データオーケストレーションを中心として、ワークフローオーケストレーション関連語の検索数が上昇傾向にあります。

本記事では最新のワークフローオーケストレーションの動向を知るために、ワークフローオーケストレーションの歴史を深ぼります。

Prefect社のブログ記事 A Brief History of Workflow Orchestration をもとに、ワークフローオーケストレーションの歴史を5つの時代に区分しました。

  • CRON時代
  • リレーショナルデータベース時代
  • データウェアハウス・データ統合時代
  • ビッグデータ時代
  • モダンデータスタック時代

各時代の主要なツールをまとめると以下のように変遷してきています。

ワークフローオーケストレーションツールの変遷

CRON時代

ワークフローオーケストレーションの歴史はCRONから始まりました。

1974年にUNIXにCRONが導入されました。

機能は指定された時刻にコマンドを実行するというものでした。

以下はCRONコマンドを用いて、一連の処理を記述したシェルスクリプトを定期実行する例です。

0 0 0 1 1 * ./workflow.sh

CRONは特定の処理をスケジュール実行したい場合の手段として使い勝手が良く、現在も幅広く使用されている機能です。

リレーショナルデータベース時代

1979年に商用リレーショナルデータベースOracle v2がリリースされました。

その後、1995年にOracleジョブキュー(DBMS_JOB)を導入します。

機能はデータベース用コードの定期的な実行をスケジュールするものでした。

以下は新しくDBMS_JOBジョブを作成するPL/SQLコード例です。

PL/SQL(Procedural Language/Structured Query Language)はOracleデータベースで使用されるプログラミング言語です。

DECLARE
  job_number NUMBER;
BEGIN
  DBMS_JOB.SUBMIT(
    job       => job_number,
    what      => 'BEGIN YOUR_PROCEDURE_NAME; END;',
    next_date => SYSDATE,
    interval  => 'SYSDATE + 1'
  );
  COMMIT;
END;

DBMS_JOBのようにリレーショナルデータベースの機能の一部として、ジョブのスケジュール実行を行えるようになりました。

データウェアハウス・データ統合時代

データウェアハウスが登場し、データ統合が行われる以前、複数のデータソースごとデータを処理していました。

例えば、アプリケーションデータはCRONで処理し、リレーショナルデータベースは付属機能のジョブを実行するといった状況です。

データウェアハウス・データ統合以前の状況

複数のデータソースからデータを収集・変換し、データウェアハウスに格納するETL処理が主流となってきました。

データウェアハウス・データ統合

データをソースからターゲットに変換する機能を提供するツールが登場します。

代表的なのは1998年にInformatica社がリリースしたPowerCenterです。

PowerCenterはスケジュールされたジョブの実行・管理を中心としたツールでした。

データ処理のソースとターゲット、2つを繋ぐワークフローの概念が初めて導入されました。

以下はPowerCenterのデータマッピングの設定画面の例です。

PowerCenter

ビッグデータ時代

2006年にGoogleHadoopOSS化し、2011年にデータレイクが提唱・流行します。

Hadoopにより分散処理が可能となったことで、大量のデータをデータレイクに格納できるようになりました。

格納したデータを活用方法に応じて処理するELT処理が主流となります。

データ基盤構築はオンプレ環境のHadoopエコシステムで作られるケースが増えてきました。

Hadoopエコシステムのデータ基盤

Hadoopエコシステムを活用するためのワークフローオーケストレーションツールが登場します。

これらのツールはワークフローツール第一世代と呼ばれることが多いです。

代表的なツールだとOozie, Luigi, Azkabanがあります。いずれのツールもHadoopジョブを管理する機能がGitHubのREADMEに記述されています。

現在も使用例が多いAirflowはワークフロー管理のプラットフォームの立ち位置ですが、時代背景的にはHadoopジョブの管理の課題感から生まれたツールになっています。

ワークフローツール第1世代

モダンデータスタック時代

2011年 BigQuery(GCP)がGA、2013年 Redshift(AWS)がGA, Sparkを事業化したDatabricks社が設立、2014年 SnowflakeがGA、Kafkaを事業化したConfluent社が設立されます。

新しい技術の登場により、データ基盤に変化が起きました

  • オンプレから安価で高速なクラウドにデータ基盤がシフト
  • ストリームデータ処理技術が発達

このような新しいデータ基盤の課題を解決するツールに対し、Modern Data Stackという言葉を当てるようになりました。

Data Stackはデータ基盤を構成する製品群を意味します。Modern Data Stackは従来のData Stackの課題を解決しようとする技術トレンドの総称で、特定のアーキテクチャ・技術・ソリューションを指す言葉ではありません。
データ活用領域のトレンド「Modern Data Stack」に関するホワイトペーパーを公開 | NTTデータグループ - NTT DATA GROUP

Emerging Architectures for Modern Data Infrastructure: 2020 | Andreessen Horowitz の記事でデータ基盤技術の変化がまとめられています。技術トレンドの変化に、ワークフローオーケストレーションが含まれています。

Architecture Shifts in Data Infrastructure (Emerging Architectures for Modern Data Infrastructure: 2020より引用)

Modern Data Stackと呼ばれるような新たなワークフローオーケストレーションツールが登場し始めました。

2016年 DigdagOSS化、StepFunctions(AWS)がGA、2017年 Prefectがリリース、ArgoOSS化、2018年 Dagsterがリリース、2019年 CloudComposer(GCP)がGA

これらはワークフローツール第二世代と呼ばれ、次世代のワークフローツールとして近年注目を集めています。

まとめ

ワークフローオーケストレーションの歴史を5つの時代に区分し、各時代の主要なツールを以下のようにまとめました。

ワークフローオーケストレーションツールの変遷

データ基盤がオンプレからクラウドへ移り変わり、Modern Data Stackと呼ばれる新しいツールを組み合わせてデータ基盤を構築するのが現代の主流となりました。

この技術トレンドの変化からワークフローオーケストレーションの注目が集まってきていると言えます。

参考