GitHub リポジトリを使ってさまざまな Data Fusion インスタンスや名前空間にまたがるパイプラインを管理
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 を使ってパイプラインを管理していただけるようになり、コードレビュー、環境間でのパイプラインの昇格 / 降格といった適切な開発プロセスの実装が可能になります。以下にこれらのユーザー ジャーニーをご紹介します。
はじめに
- バージョン 6.9.1 以降の Cloud Data Fusion インスタンスが必要です。
- Git ホスティング プロバイダとしてサポートされているのは GitHub のみです。
- 現在のところ、Cloud Data Fusion は個人アクセス トークン(PAT)の認証方式にのみ対応しています。権限が Git リポジトリの読み取りと書き込みに限定された PAT を作成する方法については、Creating a fine-grained personal access token(詳細な個人アクセス トークンの作成手順)をご参照ください。
- プライベート Cloud Data Fusion インスタンスから GitHub サーバーに接続するには、パブリック ソースアクセスのネットワーク設定を構成する必要があります。詳しくは、プライベート インスタンスを作成するおよびプライベート インスタンスからパブリック ソースへの接続をご参照ください。
GitHub リポジトリをリンクする
最初のステップは、GitHub リポジトリをリンクすることです。新しく作成したリポジトリまたは既存のリポジトリをリンクします。Cloud Data Fusion では、GitHub リポジトリを名前空間とリンクできます。リポジトリを名前空間とリンクすると、デプロイされたパイプラインを名前空間からリポジトリに push したり、リポジトリから名前空間にパイプラインを pull してデプロイしたりできるようになります。
GitHub リポジトリをリンクする手順は次のとおりです。
- Cloud Data Fusion のウェブ インターフェースで、ハンバーガー メニュー --> [Namespace Admin] をクリックします。


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


3. [Link Repository] をクリックし、以下のフィールドに入力します。
- Repository URL(必須)
- Default branch(省略可)
- Path prefix(省略可)
- Authentication type(省略可)
- Token name(必須)
- Token(必須)
- User name(省略可)


構成を検証するには、[Validate] ボタンをクリックし、有効な GitHub 接続を示す緑色のバナーが表示されていることを確認します。[SAVE & CLOSE] ボタンをクリックして、構成を保存します。
4. 構成は必要に応じて後からいつでも編集、削除できます。


リポジトリと名前空間のリンクを解除しても、GitHub 内の既存の構成は削除されません
ユースケース: リンクされた GitHub リポジトリを使用して、さまざまなインスタンスや名前空間にまたがるパイプラインを管理する
e コマースの企業で IT 管理者をしているボブという人物がいるとします。ボブが所属するチームは、これまでにいくつかのデータ パイプラインを構築してきました。同社は最近、新設された支店用に新しい Cloud Data Fusion インスタンスを作成しました。ボブは既存のパイプラインを既存のインスタンスから新しいインスタンスに複製したいと考えています。これまでは、それらのパイプラインのインポートとエクスポートを手動で行う必要があったため、煩雑でミスが起こりがちでした。Git インテグレーションを利用することで、このワークフローがどのように改善されたかを見てみましょう。
パイプラインを GitHub リポジトリに push する
先ほど構成を行ったのと同じ [Source Control Management] ページに、構成したリポジトリが次のように表示されます。


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


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


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


リンクされたリポジトリからパイプラインを pull する
既存のパイプラインを使用して新しいインスタンスを開始するために、同じリポジトリを新しいインスタンスの名前空間にリンクします。
push したパイプラインをリンクした GitHub リポジトリにデプロイするには、[Source Control Management] ページを開き、[SYNC PIPELINES] ボタンをクリックして [REMOTE PIPELINES] タブに切り替えます。目的のパイプラインを選択して [PULL TO NAMESPACE] をクリックします。


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


ユースケース: チームベースの開発
ビリーはさまざまな環境(テスト、ステージング、本番など)でデータ分析を実施するために、いくつかのパイプラインを構築しました。それらのパイプラインの一つに、配達に 3 日以上かかるかどうかに基づいて、予定日時に配達可能な注文と配達が遅延する注文とを分類するというものがあります。ブラック フライデーに顧客からの注文が増加したため、配達予定日時を一時的に遅らせるよう、会社から指示がありました。
ビリーはパイプラインを編集し、繰り返し修正して適切な延長日時を見つけました。しかし、テストが不十分な状態で本番環境にデプロイするリスクを負うのは望ましくありません。
これまでは、変更内容をテスト環境からステージング環境、本番環境に適用することは容易ではありませんでした。では、Git インテグレーションにより、この問題をどのように解決できるようになったかを見てみましょう。
パイプラインを編集する
- デプロイされたパイプラインを Studio ページで開きます。
- 上部のバーの右端にある歯車アイコンをクリックします。
- プルダウンから [Edit] をクリックして編集フローを開始します。


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


最新バージョンのパイプラインを Git に push する
すでに名前空間が Git リポジトリにリンクされ、旧バージョンのパイプラインが push されています。
上部のバーの右端にある歯車アイコンをクリックし、プルダウンから [Push to remote] を選択します。


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


正常にプロセスが完了すると、上部に緑色のバナーが表示されます。GitHub にアクセスして、新しいパイプライン構成が同期されたことを確認できます。
変更をメインブランチに統合する
レビューを適切に進めるために、環境ごとに異なるブランチを使用することをおすすめします。今回の例では、変更を開発ブランチに push し、その後 pull リクエストを作成して変更をメインブランチに統合します。
最新バージョンのパイプラインを GitHub から pull する
本番環境の名前空間が Git リポジトリのメインブランチにリンクされています。そこにはすでに、旧バージョンのパイプラインがあります。
上部のバーの右端にある歯車アイコンをクリックし、プルダウンから [Pull to namespace] を選択します。新バージョンのパイプラインもデプロイされるため、pull プロセスの完了には時間がかかります。


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


これで、プラグイン構成で変更を確認できる状態になりました。
上述のステップを踏むことで、Git インテグレーション機能を使ってテスト環境から最終的には本番環境にまで新しいパイプラインの変更を適用できることがわかりました。Data Fusion の機能の詳細については、https://cloud.google.com/data-fusion をご参照ください。
- ソフトウェア エンジニア、De Lan
- シニア ソフトウェア エンジニア、Samik Gupta