やりたいこと
Advent Calendar に参加するので、テストについて疑問に思っていたことを書いてみます。
データウェアハウスなどのデータ基盤にデータを Ingest する際に、何らかの ETL ツールでパイプラインを作成して行うことが一般的だと思いますが、その際のパイプラインのテストってどうやるのがいいのかという内容と、こういうテストツールが欲しいという内容です。
経緯
以前、Azure 上でデータ基盤を構築したことがありました。その際も Azure で提供されている ETL サービスを使っていたのですが、それが、GUI で提供されているもの (Azure Data Factory, Azure Synapse Analytics など) で、処理ごとにブロックを配置して ETL パイプラインを組み上げていくものです。
GUI で開発できるのは視覚的に分かりやすく作成しやすい反面、細かい処理などを行うにはやや手間がかかります。特に、作成したパイプラインのテストを行う際は、実際にデバッグモードとして手動で実行して確認する必要があり、手動で実行するので CI/CD のパイプライン上で実行することもできず、どうしたものかという状況でした。
手動実行を外部から呼び出す方法やテストを自動化できる方法があるのかもしれませんが今もその方法については分からないので、ご存知の方がいればコメントいただけると嬉しいです!
一般的なテストだと
一般的なテストだとそれぞれの言語のテストフレームワークで単体テストを行い、さらにはそのテストを自動化して、CI/CD に組み込むということが多いと思いますが、上記のパイプラインだとそういったことができず、テストにそれなりに時間がかかってしまっていました。
一応、上記のサービス上でパイプラインの各処理をコードで実行させることはでき (Azure Databricks の Notebook や Azure Functions を呼び出す形)、そのコードを単体テストしたり全体の処理をテストすることはできるのですが、視覚的に分かりやすいというメリットを潰してしまいます。
こういうテストツールが欲しい
上記のような状況のパイプラインを自動テストできるようなツールがないのかなーとは常々思っています。単純にパイプラインの Input と Output を定義して、実行結果がその Output になっているかということだけでも自動化できるとだいぶ楽になるだろうなと。できればパイプライン内の各処理についても同様に Output のチェックができるとなお嬉しいですね!
ただ、このケースだと 3rd Party のテストツールというよりは、Azure などのサービスプロバイダー側で何らか用意されるというのが現実的なのかなとは思いますが…
ということで
以前からどうやるのが良いのか分かっていない、GUI で提供されるデータパイプラインのテスト (特に自動化) について思うことを書いてみました。ニーズのありそうな機能ですが、提供されていないということは何らか実現が難しい理由があるのでしょうか?
詳しい方がいれば教えていただきたいです!
以上です。