演習:データ基盤アーキテクチャを設計しよう
田中VPoE「ここまで学んだModern Data Stackの知識を使って、NetShop社のデータ基盤を設計してみよう。現状のcron + シェルスクリプト構成から、どう移行するかを提案してほしい。」
あなた「はい。まずは現状を整理して、段階的な移行計画を立てます。」
田中VPoE「いいね。現実的な提案を期待しているよ。予算は限られているから、スモールスタートで効果を出すことを意識してくれ。」
ミッション概要
NetShop社の現状のデータ基盤を分析し、Modern Data Stackベースの新アーキテクチャを設計します。段階的な移行計画とツール選定理由を含めた提案書を作成しましょう。
前提条件
- NetShop社はGCPを利用中
- データソース:MySQL(注文・顧客・商品)、Stripe API(決済)、GA4(アクセスログ)
- 現状:10本以上のシェルスクリプトがcronで稼働、CSVを中間ファイルとして利用
- チーム:データエンジニア2名、データアナリスト3名
- 予算:月額50万円以内でスタート
Mission 1: 現状アーキテクチャの課題分析
現状のデータ基盤の構成を図に起こし、課題を洗い出してください。
要件
- 現状のデータフロー図をテキストで作成
- 課題を5つ以上リストアップし、影響度と緊急度で分類
- 各課題がビジネスに与える具体的な損失を推定
解答例
## 現状データフロー図
[MySQL] → [cron + shell] → [CSV] → [cron + shell] → [Excel]
↓
[Stripe API] → [手動エクスポート] → [CSV] ──────→ [Google Sheets]
↓
[GA4] → [BigQuery Export] → [放置状態] [経営会議資料]
## 課題一覧
| # | 課題 | 影響度 | 緊急度 | ビジネス損失 |
|---|------|--------|--------|------------|
| 1 | エラー検知の欠如 | 高 | 高 | 月2回のレポート欠損、意思決定の遅延 |
| 2 | 依存関係の不透明さ | 高 | 中 | 変更時に平均2日の調査工数 |
| 3 | 属人化(ドキュメントなし) | 高 | 中 | 担当者不在時に復旧不能 |
| 4 | データ品質チェックなし | 中 | 高 | 不正確なレポートによる誤判断 |
| 5 | スケーラビリティなし | 中 | 低 | データ量増加で処理時間が線形増加 |
| 6 | セキュリティ懸念 | 中 | 中 | 本番DB直接接続、CSV平文保存 |
| 7 | GA4データの未活用 | 低 | 低 | マーケティング分析の機会損失 |
Mission 2: 新アーキテクチャの設計
Modern Data Stackベースの新アーキテクチャを設計してください。
要件
- 5つのレイヤー(Ingestion/Storage/Transform/Orchestration/Consumption)のツール選定
- 各ツールの選定理由を記述
- DWHのレイヤー設計(Raw/Staging/Mart)と主要テーブル定義
- アーキテクチャ図をテキストで作成
解答例
## 新アーキテクチャ図
[MySQL] ────→ [Airbyte] ──→ [BigQuery Raw] ──→ [dbt Staging] ──→ [dbt Mart] ──→ [Looker]
[Stripe API] ─→ [Airbyte] │ │ │
[GA4] ─────────→ [Native Export] │ │ │
└── Orchestration: Cloud Composer (Airflow) ──┘
└── Observability: Elementary ────────────────┘
## ツール選定
| レイヤー | ツール | 選定理由 |
|---------|--------|---------|
| Ingestion | Airbyte (OSS) | 無料、MySQL/Stripeコネクタ対応、セルフホスト可 |
| Storage | BigQuery | GCP利用中、サーバーレス、GA4ネイティブ連携 |
| Transform | dbt Core | 無料、SQL中心でアナリストも参加可、テスト機能充実 |
| Orchestration | Cloud Composer | GCPマネージド、Airflow互換、運用負荷低 |
| Consumption | Looker | BigQuery親和性、セマンティックレイヤー |
## DWHレイヤー設計
### Raw Layer
- raw_mysql.orders
- raw_mysql.customers
- raw_mysql.products
- raw_stripe.payments
- raw_ga4.events
### Staging Layer
- stg_orders(型変換、NULL処理、重複排除)
- stg_customers(SCD Type 2対応)
- stg_products(カテゴリ正規化)
- stg_payments(通貨統一、ステータスマッピング)
- stg_page_views(GA4イベントのパース)
### Mart Layer
- mart_daily_sales(日次売上サマリ)
- mart_customer_ltv(顧客LTV計算)
- mart_product_performance(商品別パフォーマンス)
- mart_funnel_analysis(ファネル分析)
## 月額コスト概算
| 項目 | 月額 |
|------|------|
| BigQuery | 〜10万円(オンデマンド) |
| Cloud Composer | 〜15万円(最小構成) |
| Airbyte (GCE) | 〜5万円 |
| Looker | 〜15万円(5ユーザー) |
| 合計 | 〜45万円 |
Mission 3: 移行計画の策定
現状から新アーキテクチャへの段階的な移行計画を策定してください。
要件
- 3フェーズに分けた移行計画(各フェーズ1ヶ月想定)
- 各フェーズの完了条件(Definition of Done)
- リスクと対策
- 並行運用期間の方針
解答例
## 移行計画
### Phase 1: 基盤構築(1ヶ月目)
- BigQuery環境のセットアップ
- Aibyteで MySQL → BigQuery のデータ同期を構築
- dbtプロジェクトの初期化、stg_ordersモデルの作成
- DoD: MySQL のordersテーブルがBigQueryで参照可能
### Phase 2: パイプライン移行(2ヶ月目)
- 全データソース(MySQL, Stripe, GA4)の同期設定
- dbt モデル全体の構築(Staging + Mart)
- Cloud Composerでの日次バッチスケジューリング
- DoD: 既存シェルスクリプトと同等のレポートがBigQueryから生成可能
### Phase 3: 旧基盤の廃止(3ヶ月目)
- Lookerダッシュボードの構築
- 既存のExcel/Sheetsレポートからの切り替え
- cronジョブの段階的停止
- データ品質テスト・アラートの設定
- DoD: 全cronジョブが停止、Lookerが唯一のレポーティング手段
## リスクと対策
| リスク | 影響度 | 対策 |
|--------|--------|------|
| データ不一致 | 高 | 並行運用期間に新旧の数値を日次比較 |
| チームの学習コスト | 中 | dbt/Airflowのハンズオン研修を実施 |
| Aibyteの同期障害 | 中 | 初期は日次+手動チェック、アラート設定 |
| 予算超過 | 低 | BigQueryの予算アラートを設定 |
## 並行運用方針
- Phase 2の期間中、新旧両方のパイプラインを稼働
- 毎朝、主要KPI(売上・注文数・顧客数)の数値照合を実施
- 差異が1%以内を2週間継続したら旧パイプラインを停止対象に
達成度チェック
- 現状の課題を体系的に整理できた
- 5レイヤーのツール選定と理由を明確に述べられた
- DWHの3層レイヤー設計と主要テーブルを定義できた
- 段階的な移行計画を策定できた
- コスト概算とリスク対策を含めた現実的な提案ができた
推定所要時間:60分