NiFiはなぜFBPなのか——用語対応と歴史(GPSS→AMPS→DSLM)
Apache NiFiはシステム間のデータフローを自動化する基盤です。本稿はNiFiとフローベースプログラミング(FBP)の対応と、FBP史(GPSS/AMPS/DSLM)の要点を、原典に基づき手短に整理します。
Apache NiFiは、データルーティング、変換、システム調停ロジックの強力でスケーラブルな有向グラフをサポートする。
簡単に言えば、NiFiはシステム間のデータフローを自動化するために作られた。「データフロー」という言葉は様々な文脈で使われますが、ここではシステム間の情報の流れの自動化・管理という意味で使っています。この問題領域は、企業が複数のシステムを持ち、あるシステムはデータを作成し、あるシステムはデータを消費するようになってから、ずっと存在してきました。このような問題や解決方法は、これまでにも数多く議論され、明確にされてきました。包括的で容易に利用できる形式は、Enterprise Integration Patterns(エンタープライズ・インテグレーション・パターン)に記載されています。

NiFiの基本的な設計コンセプトは、フローベースプログラミング[fbp]の主要な考えと密接に関連しています。ここでは、NiFiの主なコンセプトとFBPとの対応関係を紹介します。
コンピュータプログラミングにおいて、フローベースプログラミング(FBP)とは、アプリケーションを「ブラックボックス」プロセスのネットワークとして定義するプログラミングパラダイムであり、メッセージパッシングによってあらかじめ定義された接続を介してデータを交換する。このブラックボックスプロセスは、内部を変更することなく、無限に再接続して異なるアプリケーションを形成することができる。このように、FBPはコンポーネント指向である。
FBPはデータフロープログラミングの特殊な形態で、境界付きバッファ、定義された寿命を持つ情報パケット、名前付きポート、接続の個別定義に基づいている。
フローベースドプログラミングは1970年代初頭にJ. Paul Morrisonによって発明され、当初はカナダの銀行のソフトウェアで実装された[4] 。その初期のFBPは当時のIBMのシミュレーション言語、特にGPSSに強く影響を受けたが、そのルーツはConwayがコルーチンと呼んだものに関する決定的な論文にまで遡る[5]。
FBPは長年にわたって何度も名前を変えてきた。最初の実装はAMPS (Advanced Modular Processing System)と呼ばれていた。カナダのある大規模なアプリケーションは1975年に稼働し、2013年現在、ほぼ40年間、毎日稼働する連続的な生産利用が続いている。IBMはFBPの背後にあるアイデアを特許化するには「あまりにも自然法則に近い」と考えたため、代わりに1971年に技術開示公報「データ応答型モジュール、インターリーブタスクプログラミングシステム」[6]によってFBPの基本概念をパブリックドメインにした。 [4] その概念と使用経験を記述した記事はDSLMという名で1978年にIBM Research IBM Systems Journalに掲載された[7] 2番目の実装はカナダIBMと日本IBMの共同プロジェクトとして「データフロー開発マネージャ」(DFDM)の名で行われ、日本では80年代後半に「データフロープログラミングマネージャ」の名で一時販売された。
FBPとNiFiの歴史メモ(GPSS/AMPS/DSLM)
1970年代初期:FBPをJ. Paul Morrisonが提唱。初期実装はIBM系のAMPS、概念はIBMのTech Disclosureで公開。
FBPはGPSS等のシミュレーション言語に影響を受け、1978年にDSLMとして論文化。
NiFiの設計思想はFBPの主要概念と密接に対応。
関連リンク(原典のみ)
NiFi Overview / Core concepts(FBP対応) Apache NiFi
Getting Started(起動コマンド) Apache NiFi
FBPのHistory(J. Paul Morrison)/Wikipediaの歴史節 jpaulm.github.ioWikipedia
Comments
Post a Comment