Azure Data Factory のリリースが ARM テンプレートの修正作業に追われていませんか?
ビジュアルエディタの裏側で、Azure Data Factory の実体は JSON です。パイプライン、データセット、リンクサービス、そしてそれらをデプロイする ARM テンプレートで構成されています。開発環境から本番環境へリリースする際、パラメータファイルやグローバルパラメータの調整に追われ、わずか 1 つのデータ型の不一致でデプロイが中断します。リリースはロールバック機能も含めてモデルから自動生成されるべきです。
このような課題はありませんか?
- 本番環境へのリリースが ARM デプロイのステップで失敗し、誰も編集した覚えのないパラメータファイルが原因だったことが判明する。
- 開発環境、テスト環境、本番環境でリンクサービスの設定が少しずつ異なっており、3 つの環境で別々に手動管理されている。
- あるパイプラインのためにデータセットの定義を変更したところ、共通参照していた別のパイプラインが破損した(片方しかテストしていなかった)。
- ロールバックを行うには前回の ARM テンプレートを再デプロイするしかなく、参照先データセットがまだ存在していることを祈るしかない。
Azure Data Factory は、リリースの日を迎えるまではその複雑な JSON 構造をうまく覆い隠してくれます。しかし、いざ本番環境へデプロイしようとすると、ARM テンプレート、パラメータファイル、グローバルパラメータ、リンクサービスの上書き設定が一斉に牙を剥き、わずか 1 箇所のデータ型の不一致や参照漏れによってデプロイが完全にストップしてしまいます。
リリースが脆弱になる理由
- 画面で見えなくても、実体は複雑な JSON である: ビジュアルエディタはパイプライン、データセット、リンクサービスの定義を JSON として保存し、発行操作によって ARM テンプレートへコンパイルされます。Bicep でラップしているチームもありますが、裏で扱っているアーティファクトの本質は変わりません。
- 環境差異が手作業のパラメータファイルに依存している: 開発、テスト、本番の各環境は、接続文字列、キー、リソース名が異なっており、それらの差分は人間が手作業で編集するパラメータファイルの中で管理されています。
- 依存関係が暗黙的である: データセットやリンクサービスは複数のパイプライン間で共有されます。入念にテストしたパイプラインのために共通定義を変更すると、テストしていない別のパイプラインを予期せず破壊してしまうリスクがあります。
- ロールバックが単なる「過去の再デプロイ」に過ぎない: 以前の状態に戻すには前回のテンプレートを再デプロイするしかなく、そのテンプレートが参照しているリソースが現在もそのまま残っていることを祈るしかありません。
ADF は Azure リソースとしての標準的な動作(テンプレートによるデプロイ)を行っているに過ぎません。しかし、ARM テンプレートは本来、ストレージアカウントやネットワークのような静的インフラのプロビジョニングのために設計されたものです。リリースごとに状態が変化し続けるデータウェアハウスのスキーマ管理に対して、このアプローチを適用すること自体に無理があるのです。
リリース管理が本来属するべき場所
- 自動ジェネレーターの内部: データウェアハウスがモデルから構築されている場合、リリースとは「モデルの 2 つの状態の差分」に他なりません。ツール側が各変更に必要な依存関係を完全に把握しています。
- ロールバックの完全な同梱: 自動生成されるリリースは変更内容を正確に把握しているため、デプロイを実行する前に逆操作を行うロールバックスクリプトが自動的に用意されます。
- 推測ではなく、厳密な事前比較: 本番環境がこれから受け取る変更内容は、ブラックボックスではなく、明確な差分レポートとして事前に確認できなければなりません。
Datavault Builder による変革
Datavault Builder は、2 つの状態を比較することでリリースを構築し、Git および Gitflow をネイティブサポートしています。比較対象は、ローカル環境、Git にコミットされた状態、別の稼働中環境、zip ファイル、フォルダなど柔軟に指定可能であり、ツールが差分を一覧表示し、開発者はデプロイしたい要素を選択するだけです。
- 手動管理すべきテンプレートは存在しない: リリース成果物は、選択された差分に基づいてターゲット環境向けに自動生成されます。データプロダクトを選択すると、ツールが必要な Hub、Satellite、ステージングテーブル、データソースを自動判別して提案します。
- ロールバックスクリプトを同時に生成: すべてのリリースパッケージには、対応するロールバックスクリプトとモデルのバージョン情報が自動的に同梱されます。
- 環境差分を確実に比較・検証: 本番環境に反映される内容は、現在の本番状態とデプロイ対象の状態との間の明確な差分リストとして事前に可視化されます。
- ソースのスキーマ変動でパイプラインを壊さない: カラム消失は警告付きで NULL としてロードされ、カラムサイズの拡大は自動的に追従し、カラム追加はマッピングの更新だけで完了します。
- 既存の CI/CD ツールをそのまま活用: 生成されたパッケージは Azure DevOps や GitHub Actions からそのまま実行できます。CI ツール側にデータウェアハウスの内部構造を理解させる必要はありません。
今すぐ判断すべきこと
自社のリリースプロセスを点検し、2 つの要素を確認してみてください。1 つは、手作業で保守しているパラメータファイルと環境固有のオーバーライド設定の総数です。もう 1 つは、過去数ヶ月の間にテンプレートのデプロイエラーで失敗したリリースの件数です。その保守工数とトラブルこそが、モデルベースの自動生成リリースによって完全に削減できる無駄な作業です。
貴社のデータソースで実際の動作をご確認ください
無料デモをお申し込みいただき、費用や保守工数が最もかかっているコネクタをお持ち寄りください。
データパイプラインを自社で完全に掌握する 3 つのステップ
-
モデルとデプロイを切り離す
データウェアハウスの構造は「モデル」です。デプロイ成果物は、手作業で保守するテンプレートではなく、ターゲット環境向けに自動生成されたスクリプトであるべきです。
-
リリースパッケージを自動生成する
Datavault Builder は 2 つの状態を比較し、デプロイすべき差分を特定し、必要な依存関係をすべて自動提案します。ロールバック用スクリプトも同時に生成されます。
-
環境昇格の前に事前比較を行う
ローカル環境、Git 上の状態、別の稼働中環境、zip ファイル、フォルダなど、任意の 2 つの状態を直接比較して差分を検証できます。
Datavault Builder がデータ取り込みの摩擦を解消する仕組み
-
取り込み機能を標準で統合
データベース、ファイル、REST API、NoSQL、Python ソースからのバッチ・差分・CDC ロードに対応し、Kafka などのストリームもマイクロバッチとして取り込み可能。ウェアハウス生成と同一の単一プラットフォームで完結し、追加のツール費用は不要です。
-
ベンダー仕様ではなく自社設計のスキーマ
ソーステーブルは自社で設計した Data Vault 2.0 モデルにマッピングされます。カラム追加やテーブル名変更が発生しても、マッピングを調整するだけで対応でき、ロード後のスクリプト修正作業は不要です。
-
差分(デルタ)のみを転送・処理
Hub、Link、Satellite は変更分のみを効率的にロードします。フルリロードデータはステージングに留まり、下流で毎晩再処理されるような無駄な負荷を発生させません。
-
設計段階から変更履歴を確実に保持
すべての変更履歴が到着順に記録されるため、ソース側でレコードが上書きされても過去時点の正確な状態(as-was)を遡って集計・レポーティングできます。
-
手作業でのコーディングは一切不要
ロード処理、履歴管理、データリネージはモデルからリアルタイムで自動生成され、Snowflake、Databricks、BigQuery、SQL Server、Fabric、Oracle、PostgreSQL 上でネイティブに実行されます。
-
1 つのプラットフォームで最大 9 つのツールを集約
モデリング、ETL、CI/CD、ドキュメント生成、リネージ管理を 1 つの環境に統合。要件定義から本番環境へのデプロイまでわずか 14.7 分という迅速なデリバリーを実現します。
専門家にご相談ください
弊社のセールスディレクターが 20 分間で、貴社の技術スタックに適合するか率直にお答えします。
Matt Collett
Sales Director
ご都合の良い日時をお選びください:
本シリーズで解説するその他の課題
-
Azure Data Factory の課題:UI パイプラインと Spark 変換の隠れたコスト
Azure Data Factory は Azure 内部のデータ転送層としては優れていますが、データウェアハウスを保持する場所としては不向きです。モデリングや変換基盤として使ってしまうと、誰も解読できないキャンバス、ARM テンプレートのデプロイ失敗、1 行の SQL で済む処理のための Spark クラスターなど、多くの摩擦が生じます。そして何より、それらのパイプラインはすべて Azure 専用に縛られています。
-
Azure Data Factory の Mapping Data Flow のコストがデータ価値を上回っていませんか?
Mapping Data Flow はマネージド Spark クラスター上で実行され、起動に数分を要し、vCore 時間単位で課金されます。夜間の大規模なデータ変換であれば妥当ですが、数十万行程度の処理のためにクラスターを起動するのは、ウェアハウス内の単一の SQL 文で済む作業に対して過剰なコストを払っていることになります。
-
Azure Data Factory のキャンバスが開発チームの手に負えなくなっていませんか?
ドラッグ&ドロップのパイプラインは構築は迅速ですが、変更には多大な時間がかかります。数十のアクティビティを超えると、キャンバス自体がドキュメントと化し、配線作業がロジックを覆い隠します。解決策はキャンバスを整理することではなく、パイプラインを自動生成するモデルを導入することです。
よくあるご質問
- それはバージョン管理と発行ステップの組み合わせです。ユーティリティパッケージを使えば UI でのクリック操作の代わりにマージごとのヘッドレス実行も可能です。しかし、そこで検証されるのは「テンプレートの構文」に過ぎません。成果物の実体は依然としてパイプライン JSON と環境ごとのパラメータファイルであり、開発環境にあって本番環境に存在しない参照関係は、実際にデプロイを実行するまで検知できません。真の違いは、各変更が何に依存しているかを正確に把握し、ロールバックまで含めてモデルから自動生成されるリリース機構にあります。
- いいえ、そうではありません。Datavault Builder はデータベースのデプロイパッケージを生成し、実際のリリース実行は引き続き Azure DevOps や GitHub Actions が担うことができます。不要になるのは、手作業での ARM テンプレート保守と環境ごとのパラメータファイルの管理です。
- ソース側のカラムが消失した場合はエラーでジョブを停止させず、警告を出した上で NULL としてロードします。カラム幅が拡張された場合は自動的にデータ型を拡張します。新しいカラムが追加された場合はマッピング定義を更新するだけで済みます。いずれの場合も、パイプライン層の複雑な再デプロイ作業は不要です。