コンテンツに移動
データ分析

GitHub リポジトリを使ってさまざまな Data Fusion インスタンスや名前空間にまたがるパイプラインを管理

2023年9月28日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 9 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。

データ エンジニアの皆さまは、データ パイプラインの管理に苦労されているのではないでしょうか。

データ パイプラインの複雑度が増して多くのチームメンバーが関わるようになると、変更点の追跡や効果的なコラボレーションを行うこと、そして統制のとれた形でさまざまな環境にパイプラインをデプロイすることが困難になりがちです。

この投稿では、データ エンジニアの方向けに、パイプラインの Git インテグレーション機能を使って、さまざまなインスタンスや名前空間にまたがる Data Fusion パイプラインを管理する方法をご紹介します。

背景と概要

企業はデジタル トランスフォーメーションによるビジネスのモダナイズを進める過程で、データの Volume(量)、Velocity(速度あるいは頻度)、Veracity(正確性)への対応という課題に直面します。この課題への唯一の現実的な対処方法は、迅速なイテレーション - つまり、データ プロジェクトを持続的かつ予測可能なサイクルですばやく実行することです。これを実現していただけるよう、このたび Cloud Data Fusion がデータ パイプラインのイテレーション設計、およびチームベースの開発 / バージョン管理システム(VCS)のインテグレーションに対応しました。この投稿では主に、Git インテグレーション機能(チームベースの開発 / VCS インテグレーション)について説明します。Cloud Data Fusion におけるデータ パイプラインのイテレーション設計について詳しくは、パイプラインの編集をご参照ください。

現在、多くのデベロッパー ツールに VCS システムとのインテグレーション機能が組み込まれています。それらの機能により、開発効率の向上、CI / CD の促進、チームでのコラボレーションの円滑化が見込めます。Cloud Data Fusion でパイプラインの Git インテグレーション機能をご利用いただくことで、ETL デベロッパーの皆さまには GitHub を使ってパイプラインを管理していただけるようになり、コードレビュー、環境間でのパイプラインの昇格 / 降格といった適切な開発プロセスの実装が可能になります。以下にこれらのユーザー ジャーニーをご紹介します。

はじめに

GitHub リポジトリをリンクする

最初のステップは、GitHub リポジトリをリンクすることです。新しく作成したリポジトリまたは既存のリポジトリをリンクします。Cloud Data Fusion では、GitHub リポジトリを名前空間とリンクできます。リポジトリを名前空間とリンクすると、デプロイされたパイプラインを名前空間からリポジトリに push したり、リポジトリから名前空間にパイプラインを pull してデプロイしたりできるようになります。

GitHub リポジトリをリンクする手順は次のとおりです。

  1. Cloud Data Fusion のウェブ インターフェースで、ハンバーガー メニュー --> [Namespace Admin] をクリックします。
https://storage.googleapis.com/gweb-cloudblog-publish/images/1-main-page.max-2000x2000.png

2. [Namespace Admin] ページで [Source Control Management] タブをクリックします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2-scm-link-repository.max-1100x1100.png

3. [Link Repository] をクリックし、以下のフィールドに入力します。

  • Repository URL(必須)
  • Default branch(省略可)
  • Path prefix(省略可)
  • Authentication type(省略可)
  • Token name(必須)
  • Token(必須)
  • User name(省略可)
https://storage.googleapis.com/gweb-cloudblog-publish/images/3-config-github-repository.max-1900x1900.png

構成を検証するには、[Validate] ボタンをクリックし、有効な GitHub 接続を示す緑色のバナーが表示されていることを確認します。[SAVE & CLOSE] ボタンをクリックして、構成を保存します。

4. 構成は必要に応じて後からいつでも編集、削除できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4-edit-repo-config.max-1900x1900.png

リポジトリと名前空間のリンクを解除しても、GitHub 内の既存の構成は削除されません

ユースケース: リンクされた GitHub リポジトリを使用して、さまざまなインスタンスや名前空間にまたがるパイプラインを管理する

e コマースの企業で IT 管理者をしているボブという人物がいるとします。ボブが所属するチームは、これまでにいくつかのデータ パイプラインを構築してきました。同社は最近、新設された支店用に新しい Cloud Data Fusion インスタンスを作成しました。ボブは既存のパイプラインを既存のインスタンスから新しいインスタンスに複製したいと考えています。これまでは、それらのパイプラインのインポートとエクスポートを手動で行う必要があったため、煩雑でミスが起こりがちでした。Git インテグレーションを利用することで、このワークフローがどのように改善されたかを見てみましょう。

パイプラインを GitHub リポジトリに push する

先ほど構成を行ったのと同じ [Source Control Management] ページに、構成したリポジトリが次のように表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5-configured-repository-config.max-1400x1400.png

現在の名前空間にデプロイされたパイプラインを表示するために、[SYNC PIPELINES] をクリックします。次に、DataFusionQuickStart パイプライン構成をリンクされたリポジトリに push するために、パイプラインの横にある [PUSH TO REMOTE] チェックボックスをオンにします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/6-push-to-remote.max-1700x1700.png

表示されたダイアログに commit メッセージを入力し、[Push] をクリックします。パイプラインが正常に push されたことがわかります。次に、GitHub リポジトリ ページに切り替えて、push されたパイプライン構成の JSON ファイルを確認します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/7-github-commit-page.max-1900x1900.png

同様に、push されたパイプラインに関する詳細を確認するために、Cloud Data Fusion の [REMOTE PIPELINES] タブに移動します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/8-sync-pipelines-remote.max-1800x1800.png

リンクされたリポジトリからパイプラインを pull する

既存のパイプラインを使用して新しいインスタンスを開始するために、同じリポジトリを新しいインスタンスの名前空間にリンクします。

push したパイプラインをリンクした GitHub リポジトリにデプロイするには、[Source Control Management] ページを開き、[SYNC PIPELINES] ボタンをクリックして [REMOTE PIPELINES] タブに切り替えます。目的のパイプラインを選択して [PULL TO NAMESPACE] をクリックします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/9-sync-pipelines-pull-to_ns.max-1800x1800.png

新しくデプロイされたパイプラインは [LOCAL PIPELINES] タブに表示されるほか、デプロイされたパイプラインの一覧ページでも確認可能です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/10-list-page.max-900x900.png

ユースケース: チームベースの開発

ビリーはさまざまな環境(テスト、ステージング、本番など)でデータ分析を実施するために、いくつかのパイプラインを構築しました。それらのパイプラインの一つに、配達に 3 日以上かかるかどうかに基づいて、予定日時に配達可能な注文と配達が遅延する注文とを分類するというものがあります。ブラック フライデーに顧客からの注文が増加したため、配達予定日時を一時的に遅らせるよう、会社から指示がありました。

ビリーはパイプラインを編集し、繰り返し修正して適切な延長日時を見つけました。しかし、テストが不十分な状態で本番環境にデプロイするリスクを負うのは望ましくありません。

これまでは、変更内容をテスト環境からステージング環境、本番環境に適用することは容易ではありませんでした。では、Git インテグレーションにより、この問題をどのように解決できるようになったかを見てみましょう。

パイプラインを編集する

  1. デプロイされたパイプラインを Studio ページで開きます。
  2. 上部のバーの右端にある歯車アイコンをクリックします。
  3. プルダウンから [Edit] をクリックして編集フローを開始します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/11-edit-pipeline.max-1900x1900.png

4. プラグイン構成で必要な変更を加えます。完了後に [Deploy] をクリックすると、新しいバージョンのパイプラインがデプロイされます。Cloud Data Fusion におけるデータ パイプラインのイテレーション設計について詳しくは、パイプラインの編集をご参照ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/12-deploy-pipeline.max-2000x2000.png

最新バージョンのパイプラインを Git に push する

すでに名前空間が Git リポジトリにリンクされ、旧バージョンのパイプラインが push されています。

上部のバーの右端にある歯車アイコンをクリックし、プルダウンから [Push to remote] を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/13-pipeline-detail-page-push-to-remote.max-1900x1900.png

commit メッセージを入力するダイアログが表示されます。確定すると、パイプラインの push プロセスが開始されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/14-commit-message.max-1900x1900.png

正常にプロセスが完了すると、上部に緑色のバナーが表示されます。GitHub にアクセスして、新しいパイプライン構成が同期されたことを確認できます。

変更をメインブランチに統合する

レビューを適切に進めるために、環境ごとに異なるブランチを使用することをおすすめします。今回の例では、変更を開発ブランチに push し、その後 pull リクエストを作成して変更をメインブランチに統合します。

最新バージョンのパイプラインを GitHub から pull する

本番環境の名前空間が Git リポジトリのメインブランチにリンクされています。そこにはすでに、旧バージョンのパイプラインがあります。

上部のバーの右端にある歯車アイコンをクリックし、プルダウンから [Pull to namespace] を選択します。新バージョンのパイプラインもデプロイされるため、pull プロセスの完了には時間がかかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/15-pipeline-detail-page-pull-to-ns.max-1900x1900.png

プロセスが正常に完了したら、上部のバーにある [History] ボタンをクリックして、新バージョンがデプロイされたことを確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/16-edit-history.max-1900x1900.png

これで、プラグイン構成で変更を確認できる状態になりました。

上述のステップを踏むことで、Git インテグレーション機能を使ってテスト環境から最終的には本番環境にまで新しいパイプラインの変更を適用できることがわかりました。Data Fusion の機能の詳細については、https://cloud.google.com/data-fusion をご参照ください。

- ソフトウェア エンジニア、De Lan

- シニア ソフトウェア エンジニア、Samik Gupta

投稿先