コンテンツにスキップ

サーバーレスETLパイプライン

はじめに

抽出、変換、ロード(ETL)パイプラインは、データエンジニアリングの分野において重要な要素であり、生データから構造化された使用可能な形式へのシームレスなデータフローを促進します。ETLパイプラインは、データを収集、クレンジング、変換してターゲットの宛先にロードする必要があるシナリオにおいて、データ処理の旅において重要な役割を果たします。

プロセスは抽出から始まります。ここでは、データがデータベース、ファイル、ストリームなどのさまざまなソースから収集されます。この生データはしばしば異種で非構造化されているため、次のステップである変換が必要です。変換中、データはフォーマットの標準化、一貫性のクレンジング、追加のコンテキストや計算による強化を行う一連の操作を受けます。このフェーズは、データの品質と一貫性を確保し、下流のアプリケーションや分析の要件に合わせるために重要です。

最後に、変換されたデータはデータウェアハウス、データベース、またはその他のストレージソリューションなどの宛先にロードされます。ロードフェーズでは、処理されたデータを意図された宛先に効率的に移動させ、さまざまな目的(報告、分析、機械学習モデルへのフィードなど)で簡単にアクセスできるようにします。

ETLパイプラインは、業界全体でデータ駆動型の意思決定プロセスにおいて重要な役割を果たし、組織がデータ資産から洞察と価値を引き出すことを可能にします。生データから実用的な洞察への旅を自動化し、合理化することで、ETLパイプラインは企業が情報に基づいた意思決定を行い、プロセスを最適化し、今日のデータ駆動型の環境で競争上の優位性を得ることを支援します。

ETLパイプラインの実例には、複数の小売店からの販売データを抽出し、標準化された形式に変換し、分析と報告のために中央集約されたデータウェアハウスにロードするシナリオが含まれます。同様に、ETLパイプラインは、レガシーデータを現代のシステムに移行する必要があるデータ移行プロジェクトでも利用され、プロセス全体でデータの整合性と一貫性を確保します。

Cloudflareは、完全にサーバーレスのETLパイプラインの展開を可能にし、複雑さ、生産までの時間、全体的なコストを削減できます。以下の図は、Cloudflareが一般的なETLパイプラインの展開でどのように使用されるかのさまざまな方法を示しています。

HTTPベースのインジェストを使用したETLパイプライン

図1: サーバーレス: HTTPベースのインジェスト

このアーキテクチャは、APIエンドポイントをインジェストとして使用した完全にサーバーレスのETLパイプラインを示しています。クライアントは、処理されるデータをHTTPリクエストで送信します。一般的な例には、クリックストリームデータや分析が含まれます。

  1. クライアントリクエスト: インジェストするデータを含むPOSTリクエストを送信します。例としては、クリックストリームデータや分析エンドポイントが含まれます。
  2. 入力処理: Workersを使用して受信リクエストを処理し、処理バックログに追加するためにQueuesにメッセージを送信します。
  3. データ処理: Queuesを使用して、入力データをバッチで処理するコンシューマーをトリガーし、下流のオーバーロードを防ぎ、効率を向上させます。コンシューマーは、すべてのデータクレンジング、変換、標準化操作を実行します。
  4. オブジェクトストレージ: 処理されたデータをR2にアップロードして永続的に保存します。
  5. Ack/Retryメカニズム: 各ドキュメントの成功/エラーを示すために、コンシューマー内でQueues Runtime APIを使用します。Queuesは、必要に応じて再試行をスケジュールします。
  6. データクエリ: 外部サービスから処理されたデータにアクセスして、さらなるデータ利用を行います。

オブジェクトストレージインジェストを使用したETLパイプライン

図2: サーバーレス: オブジェクトストレージインジェスト

このアーキテクチャは、オブジェクトストレージをインジェストとして使用した完全にサーバーレスのETLパイプラインを示しています。一般的な例には、ログや非構造化ドキュメントの処理が含まれます。

  1. クライアントリクエスト: S3互換APIを介してR2に生データをアップロードします。一般的な例には、ログや分析データが含まれます。
  2. 入力処理: オブジェクトアップロード時にR2イベント通知を使用してQueuesにメッセージを送信します。
  3. データ処理: Queuesを使用して、入力データをバッチで処理するコンシューマーをトリガーし、下流のオーバーロードを防ぎ、効率を向上させます。コンシューマーは、すべてのデータクレンジング、変換、標準化操作を実行します。
  4. オブジェクトストレージ: 処理されたデータをR2にアップロードして永続的に保存します。
  5. Ack/Retryメカニズム: 各ドキュメントの成功/エラーを示すために、コンシューマー内でQueues Runtime APIを使用します。Queuesは、必要に応じて再試行をスケジュールします。
  6. データクエリ: 外部サービスから処理されたデータにアクセスして、さらなるデータ利用を行います。

関連リソース