EXERCISE 90分

総合演習:エンドツーエンドのデータパイプラインを設計しよう

田中VPoE「Month 5の総仕上げだ。Modern Data Stack、dbt、Airflow、ストリーミング、データ品質まで学んだ全ての知識を統合して、NetShop社のデータ基盤全体の設計書を作成してほしい。」

あなた「バッチとリアルタイム両方を含む、エンドツーエンドのパイプライン設計ですね。」

田中VPoE「そうだ。技術選定から運用設計まで、実際に構築・運用できるレベルの設計書にしてくれ。」

ミッション概要

NetShop社のデータ基盤を刷新するエンドツーエンドのデータパイプライン設計書を作成します。

前提条件

  • Month 5の全レッスン(Step 1〜5)を修了していること

Mission 1: アーキテクチャ全体設計(30分)

背景情報

データソース:
  - 基幹システム(PostgreSQL): 注文、顧客、商品マスタ
  - Webログ(JSON): クリック、ページビュー、セッション
  - 外部API: 天気、為替、SNSフィード

利用者:
  - 経営層: 日次KPIダッシュボード
  - マーケティング: リアルタイムキャンペーン効果測定
  - DS: 特徴量パイプライン(ML用)
  - カスタマーサポート: 顧客360ビュー

現状の課題:
  - cronジョブの乱立(80個以上)
  - 障害発生時の原因特定に半日以上
  - データの鮮度が不明(いつ更新されたかわからない)

タスク

全体アーキテクチャ図と技術選定表を作成してください。

解答例

アーキテクチャ図:

[データソース]
  PostgreSQL ─→ [CDC: Debezium] ─→ [Kafka] ─┬→ [Flink] → リアルタイム分析
  Webログ ───→ [Fluentd] ────→ [Kafka] ──┤
  外部API ───→ [Airflow Extract] ──→ [S3 Raw] │

                                     ↓        │
                               [S3 Data Lake]  │
                                     ↓        ↓
                               [Snowflake / BigQuery]

                               [dbt Transform]

                          ┌── staging ── intermediate ── mart ──┐
                          │                                      │
                          ↓                                      ↓
                    [Looker/Metabase]                      [Feast Feature Store]
                    ダッシュボード                          ML特徴量パイプライン

技術選定:

レイヤー技術選定理由
データ収集(バッチ)Airflowチームの既存スキル、豊富なOperator
データ収集(CDC)Debezium + KafkaリアルタイムDB変更キャプチャ
メッセージングKafka(MSK)マネージドで運用負荷低減
ストリーム処理Flink低レイテンシ、状態管理に強い
データレイクS3コスト効率、AWSエコシステム統合
データウェアハウスSnowflakeスケーラビリティ、コンピュート分離
データ変換dbtSQLベース、テスト・ドキュメント統合
オーケストレーションAirflow(MWAA)マネージド、既存知識活用
BIMetabaseOSS、セルフサービス対応
データ品質Great Expectationsパイプライン統合、豊富なルール
可観測性Elementarydbtネイティブ、自動異常検知

Mission 2: パイプライン詳細設計(30分)

タスク

日次バッチパイプラインとリアルタイムパイプラインの詳細設計を行ってください。

  1. Airflow DAGの設計(タスク構成、依存関係、エラーハンドリング)
  2. dbtモデルの層構成と主要モデル一覧
  3. ストリーミングパイプラインのトピック設計
解答例

Airflow DAG設計:

DAG: netshop_daily_pipeline (毎日02:00)
├── TaskGroup: extract
│   ├── extract_orders (PostgreSQL → S3)
│   ├── extract_customers (PostgreSQL → S3)
│   ├── extract_products (PostgreSQL → S3)
│   └── extract_weather_api (API → S3)
├── TaskGroup: load
│   ├── load_to_snowflake (S3 → Snowflake raw)
│   └── data_freshness_check
├── TaskGroup: transform
│   ├── dbt_run_staging
│   ├── dbt_run_intermediate
│   └── dbt_run_mart
├── TaskGroup: quality
│   ├── dbt_test
│   ├── great_expectations_validate
│   └── anomaly_detection
└── notify (Success/Failure → Slack)

エラーハンドリング:
  - extract: retries=3, exponential_backoff, fallback to cache
  - load: retries=2, idempotent MERGE
  - transform: retries=1, 品質ゲートで停止判断
  - SLA: 全体4時間以内

dbtモデル構成:

モデル名説明
stagingstg_orders注文データクレンジング
stagingstg_customers顧客データクレンジング
stagingstg_products商品マスタクレンジング
stagingstg_web_eventsWebログパース
intermediateint_order_details注文明細結合
intermediateint_customer_behavior顧客行動集計
martmart_daily_kpi日次KPIテーブル
martmart_customer_360顧客360ビュー
martmart_product_performance商品パフォーマンス
martmart_campaign_effectキャンペーン効果

ストリーミングトピック設計:

トピックパーティション保持期間用途
cdc.orders1230日注文CDC
cdc.customers630日顧客CDC
web.clickstream247日クリックストリーム
alerts.anomaly330日異常検知アラート

Mission 3: 運用設計(30分)

タスク

データ基盤の運用設計書を作成してください。

  1. モニタリング設計(何を・どう監視するか)
  2. インシデント対応フロー
  3. 導入スケジュール(3ヶ月間)
解答例

モニタリング設計:

監視対象指標閾値ツール
パイプラインDAG成功率< 95%Airflow UI
パイプライン実行時間SLA超過Airflow SLA
データ品質品質スコア< 80Great Expectations
データ鮮度最終更新時刻> 24hElementary
ボリューム行数変動z-score > 3Elementary
KafkaConsumer Lag> 10000CloudWatch
インフラCPU/メモリ> 80%CloudWatch

インシデント対応フロー:

1. アラート検知(Slack #data-alerts)
2. 初動対応(15分以内)
   - 影響範囲の特定(リネージ確認)
   - 暫定対応(リトライ or ロールバック)
3. 原因調査(1時間以内)
   - ログ確認、品質レポート確認
4. 恒久対応
   - 修正・テスト追加・ドキュメント更新
5. 振り返り
   - ポストモーテム実施、再発防止策

導入スケジュール:

内容
Week 1-2Kafka/Snowflake環境構築、dbtプロジェクト初期化
Week 3-4staging/intermediate層構築、基本テスト整備
Week 5-6mart層構築、Airflow DAG構築
Week 7-8ストリーミングパイプライン構築
Week 9-10データ品質・可観測性・モニタリング構築
Week 11-12負荷テスト、ドキュメント整備、チームトレーニング

達成度チェック

  • エンドツーエンドのアーキテクチャ図を作成できた
  • 全レイヤーの技術選定と理由を明記できた
  • Airflow DAGとdbtモデルの詳細設計ができた
  • ストリーミングパイプラインのトピック設計ができた
  • モニタリング設計とインシデント対応フローを定義できた
  • 3ヶ月間の導入スケジュールを作成できた

推定所要時間:90分