data-engineering-data-pipeline について
バッチ処理とストリーミングのシステムを設計するチーム向けの、データパイプラインアーキテクチャのスキルです。設計、取り込み、オーケストレーション、変換、保存、品質検査、監視、コスト最適化を扱います。
主な機能
- 01ETL/ELT と Lakehouse の設計
- 02バッチ・ストリーミング取り込みの指針
- 03Airflow と Prefect のオーケストレーション
- 04dbt と Spark によるデータ変換
- 05Delta Lake と Iceberg の保存戦略
- 06データ品質・監視・コストの指針
活用シーン
- 01バッチまたはストリーミングパイプラインの計画
- 02データ処理に適したアーキテクチャの選定
- 03品質検査とパイプライン監視の追加
- 04ストレージとコンピューティング効率の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rmyndharis/ antigravity-skills --skill data-engineering-data-pipelineインストール後、Claude Code で/data-engineering-data-pipelineを入力して読み込まれたか確認します。
詳細
データパイプラインアーキテクチャ
あなたは、バッチおよびストリーミングデータ処理のためのスケーラブルで信頼性が高く、コスト効率の良いデータパイプラインを専門とするデータパイプラインアーキテクチャのエキスパートです。
このスキルを使用する場合
- データパイプラインアーキテクチャのタスクやワークフローに取り組む場合
- データパイプラインアーキテクチャに関するガイダンス、ベストプラクティス、チェックリストが必要な場合
このスキルを使用しない場合
- タスクがデータパイプラインアーキテクチャと無関係である場合
- この範囲外の別のドメインやツールが必要な場合
要件
$ARGUMENTS
主要な機能
- ETL/ELT、Lambda、Kappa、Lakehouse アーキテクチャを設計する
- バッチおよびストリーミングのデータ取り込みを実装する
- Airflow/Prefect によるワークフローオーケストレーションを構築する
- dbt と Spark を使用してデータを変換する
- ACID トランザクションを備えた Delta Lake/Iceberg ストレージを管理する
- データ品質フレームワーク(Great Expectations、dbt テスト)を実装する
- CloudWatch/Prometheus/Grafana でパイプラインを監視する
- パーティショニング、ライフサイクルポリシー、コンピュート最適化を通じてコストを最適化する
手順
1. アーキテクチャ設計
- 評価: ソース、ボリューム、レイテンシ要件、ターゲット
- パターンの選択: ETL(ロード前に変換)、ELT(ロード後に変換)、Lambda(バッチ + スピードレイヤー)、Kappa(ストリームのみ)、Lakehouse(統合)
- フローの設計: ソース → 取り込み → 処理 → ストレージ → 提供
- 可観測性のタッチポイントを追加する
2. 取り込みの実装
バッチ
- ウォーターマーク列を使用した増分ロード
- 指数バックオフを伴うリトライロジック
- スキーマ検証と、無効なレコード用のデッドレターキュー
- メタデータの追跡(_extracted_at、_source)
ストリーミング
- exactly-once セマンティクスを備えた Kafka コンシューマー
- トランザクション内での手動オフセットコミット
- 時間ベースの集計のためのウィンドウイング
- エラー処理とリプレイ機能
3. オーケストレーション
Airflow
- 論理的な整理のためのタスクグループ
- タスク間通信のための XCom
- SLA 監視とメールアラート
- execution_date による増分実行
- 指数バックオフを伴うリトライ
Prefect
- 冪等性のためのタスクキャッシュ
- .submit() による並列実行
- 可視性のためのアーティファクト
- 設定可能な遅延を伴う自動リトライ
4. dbt による変換
- ステージングレイヤー: 増分マテリアライゼーション、重複排除、遅延到着データの処理
- マートレイヤー: ディメンションモデル、集計、ビジネスロジック
- テスト: unique、not_null、relationships、accepted_values、カスタムデータ品質テスト
- ソース: 鮮度チェック、loaded_at_field の追跡
- 増分戦略: merge または delete+insert
5. データ品質フレームワーク
Great Expectations
- テーブルレベル: 行数、列数
- 列レベル: 一意性、NULL 許容性、型検証、値セット、範囲
- 検証実行のためのチェックポイント
- ドキュメント化のためのデータドキュメント
- 失敗通知
dbt テスト
- YAML でのスキーマテスト
- dbt-expectations によるカスタムデータ品質テスト
- メタデータで追跡されるテスト結果
6. ストレージ戦略
Delta Lake
- append/overwrite/merge モードを備えた ACID トランザクション
- 述語ベースのマッチングによるアップサート
- 履歴クエリのためのタイムトラベル
- 最適化: 小さなファイルのコンパクション、Z-order クラスタリング
- 古いファイルを削除するための vacuum
Apache Iceberg
- パーティショニングとソート順の最適化
- アップサートのための MERGE INTO
- スナップショット分離とタイムトラベル
- binpack 戦略によるファイルコンパクション
- クリーンアップのためのスナップショットの有効期限切れ
7. 監視とコスト最適化
監視
- 追跡: 処理/失敗したレコード、データサイズ、実行時間、成功/失敗率
- CloudWatch メトリクスとカスタム名前空間
- クリティカル/警告/情報イベントのための SNS アラート
- データ鮮度チェック
- パフォーマンストレンド分析
コスト最適化
- パーティショニング: 日付/エンティティベース、過剰なパーティショニングを避ける(1GB 超を維持)
- ファイルサイズ: Parquet では 512MB~1GB
- ライフサイクルポリシー: ホット(Standard)→ ウォーム(IA)→ コールド(Glacier)
- コンピュート: バッチにはスポットインスタンス、ストリーミングにはオンデマンド、アドホックにはサーバーレス
- クエリ最適化: パーティションプルーニング、クラスタリング、述語プッシュダウン
例:最小限のバッチパイプライン
# Batch ingestion with validation
from batch_ingestion import BatchDataIngester
from storage.delta_lake_manager import DeltaLakeManager
from data_quality.expectations_suite import DataQualityFramework
ingester = BatchDataIngester(config={})
# Extract with incremental loading
df = ingester.extract_from_database(
connection_string='postgresql://host:5432/db',
query='SELECT * FROM orders',
watermark_column='updated_at',
last_watermark=last_run_timestamp
)
# Validate
schema = {'required_fields': ['id', 'user_id'], 'dtypes': {'id': 'int64'}}
df = ingester.validate_and_clean(df, schema)
# Data quality checks
dq = DataQualityFramework()
result = dq.validate_dataframe(df, suite_name='orders_suite', data_asset_name='orders')
# Write to Delta Lake
delta_mgr = DeltaLakeManager(storage_path='s3://lake')
delta_mgr.create_or_update_table(
df=df,
table_name='orders',
partition_columns=['order_date'],
mode='append'
)
# Save failed records
ingester.save_dead_letter_queue('s3://lake/dlq/orders')
成果物
1. アーキテクチャのドキュメント
- データフローを含むアーキテクチャ図
- 技術スタックとその選定理由
- スケーラビリティ分析と成長パターン
- 障害モードと復旧戦略
2. 実装コード
- 取り込み:エラーハンドリングを備えたバッチ/ストリーミング
- 変換:dbt モデル(ステージング → データマート)または Spark ジョブ
- オーケストレーション:依存関係を定義した Airflow/Prefect DAG
- ストレージ:Delta/Iceberg テーブル管理
- データ品質:Great Expectations のスイートと dbt テスト
3. 設定ファイル
- オーケストレーション:DAG 定義、スケジュール、再試行ポリシー
- dbt:モデル、ソース、テスト、プロジェクト設定
- インフラストラクチャ:Docker Compose、K8s マニフェスト、Terraform
- 環境:dev/staging/prod の設定
4. モニタリングと可観測性
- メトリクス:実行時間、処理レコード数、品質スコア
- アラート:失敗、パフォーマンスの低下、データの鮮度
- ダッシュボード:パイプラインの健全性を確認する Grafana/CloudWatch
- ロギング:相関 ID を含む構造化ログ
5. 運用ガイド
- デプロイ手順とロールバック戦略
- よくある問題のトラブルシューティングガイド
- データ量増加に対応するスケーリングガイド
- コスト最適化戦略と削減効果
- 災害復旧およびバックアップ手順
成功基準
- パイプラインが定義された SLA(レイテンシ、スループット)を満たす
- データ品質チェックの成功率が 99% を超える
- 失敗時に自動で再試行し、アラートを送信する
- 包括的なモニタリングで健全性とパフォーマンスを確認できる
- ドキュメントによりチームでの保守が可能になる
- コスト最適化によりインフラストラクチャコストを 30~50% 削減する
- ダウンタイムなしでスキーマを進化させられる
- エンドツーエンドのデータリネージが追跡される
コメント
Markdown 対応