DFDL 処理を解決する Google のオープンソース ソリューション
Google Cloud Japan Team
※この投稿は米国時間 2022 年 5 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。
クラウドは今やすっかりアプリケーションの拡張やモダナイズを実現するための選択肢になりましたが、それでも移行が一筋縄ではいかない状況はいくつか存在します。たとえば、メインフレーム環境のデータにアクセスするアプリケーションを移行する場合がそうです。ある特定の時点でデータとアプリケーションを移行すると、同期がずれる可能性があります。レガシー ワークロードとの相互運用性をサポートするため、およびメインフレームのデータにアクセスするためには、移行中にこれらのことを可能にする仕組みを実装する必要があります。後者の場合、IBM Integration Bus のようなメインフレームに存在するデータへのアクセスには、Open Grid Forum(OGF)が開発した DFDL(データ フォーマット記述言語)というオープン スタンダードのモデリング言語が使用されています。
DFDL で採用されているモデルまたはスキーマを使用すれば、テキストやバイナリデータをそのネイティブ形式から解析し、メインフレームからの情報セット(つまり、物理形式とは無関係なデータ内容の論理的表現)として表すことができます。
IBM App Connect による DFDL 処理
これまで、DFDL で記述されたデータの解析や処理に関するソリューションについて語る場合は、IBM DFDL によってカスタム ソリューションを開発できる IBM App Connect が選択肢の一つとして挙げられてきました。次の図は、IBM App Connect 上の DFDL ソリューションの大まかな実装アーキテクチャを表します。


IBM App Connect は、テーブルへの安定した統合をエンタープライズ レベルの料金で実現します。2022 年 5 月時点での IBM の店頭価格によると、App Connect を IBM Cloud サービスと組み合わせて使用した場合、IBM App Connect の月額料金は $500 以上になります。この料金には、DFDL の定義をメインフレームに保存して維持管理する費用は含まれていません。Tailored Fit Pricing on IBMz15 が導入されたことで、メインフレームの維持には 5 年間毎月 $4,900~$9,300 の費用がかかります。これは、DFDL で定義されたデータを処理したいだけの中小企業にとっては大きな出費です。
Google Cloud 上の Google オープンソース DFDL プロセッサの紹介
Google の使命は、あらゆる場所であらゆる人のために役立つものを作り出すことです。この決意を胸に秘めた Google Cloud チームは、簡単にアクセス可能でカスタマイズして使用できる DFDL プロセッサ ソリューションを開発し、これをオープンソース化しました。
Google はメインフレームを維持しながら使用し続けるには多大なコストがかかることを理解しており、こうした理由から、DFDL 定義を保存するデータベースとして Cloud Firestore と Bigtable を統合しました。Firestore は、月額約 $186 の料金で 1 か月に 100,000 点の読み取り、25,000 点の書き込み、100,000 点の削除、1 TB のストレージを利用できます。それに対して、Bigtable はテラバイトまたはペタバイト規模のデータを保存する高速でスケーラブルなデータベース ソリューションを提供するもので、こちらも比較的低コストです。このメインフレームからの脱却とクラウドネイティブなデータベース ソリューションの導入は、毎月のコストを数千ドル削減できる可能性があります。
次に Google は、App Connect を上記のオープンソース DFDL プロセッサ、Cloud Pub/Sub サービスと、オープンソースの Apache Daffodil ライブラリの組み合わせに置き換えました。Pub/Sub は、メインフレームとプロセッサ間の接続と、プロセッサから下流アプリケーションへの接続を提供します。Daffodil ライブラリは、スキーマのコンパイルや、特定の DFDL 定義とメッセージを含む情報セットの出力に役立ちます。Pub/Sub サービスと Daffodil ライブラリの合計使用料は月額約 $117 で、このソリューションを利用すれば毎月少なくとも $380 の費用を削減できます。
次の表に、上記 2 つのソリューションにかかる費用の違いをまとめます。


仕組み
DFDL で記述されたデータは通常、下流アプリケーション(これらはすでにクラウドネイティブな環境に移行されている可能性があります)で消費できるように、JSON などの広く使用されている形式で提供する必要があります。このデータの消費を実現するため、クラウドネイティブ アプリケーション / サービスを Google Cloud サービスと連携させることができます。つまり、Google Cloud サービスがメインフレームからテキストやバイナリデータを受け取り、対応する DFDL をデータベースからフェッチし、下流アプリケーションで消費できるようにコンパイルして結果を JSON で出力します。
次の図は、提案するアーキテクチャの概要を示します。


アプリケーションは、メインフレームから受け取った情報を処理するように構築できます。たとえば DFDL プロセッサ サービスは、Daffodil API を利用してデータを対応する DFDL スキーマと照合して解析し、JSON を出力します。
DFDL スキーマ定義は、クラウドに移行して Firestore または Bigtable に保存できます。これらの定義はほとんど変更されることがなく、Key-Value ペアの形式で保存できるため、非リレーショナルのマネージド データベースに保存することが推奨されます。
Google Cloud Pub/Sub は、Pub/Sub トピックのデータソース(メインフレーム)からバイナリ / テキスト メッセージを受け取るイベント駆動メカニズムを利用できます。DFDL プロセッサはこの機能を通じてデータにアクセスし、対応する DFDL 定義を Firestore または Bigtable から取得した後、それらの両方を Daffodil API に渡してコンパイルと JSON 結果の出力を行うことができます。出力された JSON 結果は最終的に Pub/Sub トピックに公開され、下流アプリケーションがこれを消費します。イベントデータは、イベントを一般的な形式で記述できる CloudEvent スキーマ仕様に従うことをおすすめします。そうすれば、複数のサービス プラットフォームやシステムとの相互運用が可能になります。
実装例については、次の GitHub をご覧ください。
まとめ
この投稿では、DFDL で定義されたデータの処理に使用されるパイプラインについて説明し、それらのパイプラインにかかる費用を比較しました。また、Cloud Pub/Sub、Firestore、Bigtable を使用してバイナリ イベント メッセージをリッスンできるサービスを作成し、対応する DFDL 定義をマネージド データベースから取得し、それを処理して JSON を出力する方法も示しました。出力された JSON は、下流アプリケーションで既存の技術やライブラリを使用して消費できます。
1. 料金の比較分析は 2022 年 5 月時点のものであり、使用状況に応じて変わることがあります
- 戦略的クラウド エンジニア Carolina Hernandez
- Cloud テクニカル レジデント Usama Ijaz