AWSデータ基盤選定マトリクス
周辺資料: 学習インデックス · AWSサービス一覧(2026) · Kinesisストリーム処理 · S3データレイク設計
データ基盤サービスを要件ベースで選定するための決定表。
1. データアーキテクチャの全体像
[データソース]
業務DB / SaaS / IoT / ログ / API
│
├─── リアルタイム ──────────────────────────────────┐
│ Kinesis Data Streams / MSK (Kafka) │
│ │ │
│ Flink (KDA) / Lambda │
│ │ │
│ OpenSearch / Timestream / DynamoDB ←──────────┘
│ (リアルタイム可視化・アラート)
│
└─── バッチ ───────────────────────────────────────┐
DMS / Snow Family / S3 Transfer │
│ │
S3 Raw Zone (Parquet/ORC/Iceberg) │
│ │
Glue ETL / EMR Spark │
│ │
S3 Processed Zone ────────────────────────── │
│ │
┌───┴────────────────────┐ │
Athena (アドホック) Redshift (DWH) │
QuickSight (可視化) SageMaker (ML) │
└───────────────────────────────────────────-─┘
[ガバナンス層]
Lake Formation(アクセス制御・カタログ)
Glue Data Catalog(メタデータ)
DataZone(データメッシュ)
Macie(PII検出)
2. 取り込み(Ingestion)選定
バッチ取り込み
| データソース |
推奨サービス |
特記事項 |
| RDS / Oracle / SQL Server → S3 |
AWS DMS(CDC対応) |
継続的なCDCにも使用可 |
| オンプレ大量データ(PB級) |
AWS Snowball / Snowmobile |
物理転送 |
| S3 → S3 / 外部HTTP |
S3 Transfer Acceleration |
大陸間転送高速化 |
| SaaS(Salesforce / SAP) |
AppFlow |
ノーコード連携 |
| SFTP / FTP ファイル受信 |
Transfer Family |
S3 に自動着地 |
リアルタイム取り込み
| 要件 |
推奨 |
代替 |
| AWSネイティブ、シンプル |
Kinesis Data Streams |
— |
| Kafka 互換 / 既存 Kafka 移行 |
MSK (Managed Kafka) |
Kinesis |
| S3/Redshift/OpenSearch への直接配信 |
Kinesis Data Firehose |
— |
| IoT デバイス → クラウド |
IoT Core + Kinesis |
IoT Core + Firehose |
Kinesis vs MSK 詳細比較
| 比較軸 |
Kinesis Data Streams |
MSK |
| 管理コスト |
低(フルマネージド) |
中(ブローカー管理あり) |
| Kafka 互換 |
なし |
あり |
| スケール単位 |
シャード(1シャード = 1MB/s in) |
ブローカー追加 |
| 保持期間 |
最大365日 |
設定次第(無制限可) |
| コンシューマー |
KCL / Lambda / Flink |
Consumer Group |
| コスト(中規模) |
低〜中 |
中〜高 |
バッチ ETL
| 要件 |
推奨 |
理由 |
| ノーコード/ローコード ETL |
Glue Studio |
ビジュアルETL、Python/Scala生成 |
| Spark カスタム処理 |
Glue ETL / EMR on EC2 |
Glue: サーバーレス、EMR: カスタム性高 |
| 大規模 Spark(コスト最適化) |
EMR on EC2 (Spot混在) |
Spot で最大90%コスト削減 |
| Spark on Kubernetes |
EMR on EKS |
既存EKSクラスターに統合 |
| SQL 変換(DWH内) |
Redshift Stored Procedure / dbt |
Redshift で完結 |
ストリーム処理
| 要件 |
推奨 |
| リアルタイム集計・ウィンドウ処理 |
Managed Service for Apache Flink(KDA) |
| 軽量フィルタリング・ルーティング |
Kinesis Data Firehose(Lambda変換) |
| シンプルなトリガー処理 |
Lambda(Kinesis/MSK トリガー) |
| 複雑なイベントパターンマッチング |
Flink CEP |
Glue vs EMR の使い分け
Glue を選ぶ場合:
- サーバーレスで運用したい(クラスター管理不要)
- Glue Data Catalog との連携を重視する
- ジョブ実行頻度が低い(コールドスタート許容)
- Python / Scala でシンプルな ETL
EMR を選ぶ場合:
- 大量データを継続処理(長時間クラスター)
- Spark のカスタムライブラリが必要
- Presto / Hive / HBase / Flink を使いたい
- コスト最適化が最優先(Spot活用)
4. ストレージ選定
データレイク・DWH
| 比較軸 |
S3 + Athena |
Redshift |
Redshift Spectrum |
| 用途 |
アドホック分析 |
定型・高速クエリ |
S3データをRedshiftから直接クエリ |
| スケール |
EB級 |
EB級(Managed Storage) |
S3依存 |
| 同時クエリ |
制限あり |
高同時実行 |
中程度 |
| 管理コスト |
低 |
中 |
中(Redshift管理必要) |
| コスト |
スキャン課金(安) |
クラスター固定費 |
Redshift + S3スキャン |
オープンテーブルフォーマット
| フォーマット |
特徴 |
AWSでの活用 |
| Apache Iceberg |
ACID、スキーマ進化、タイムトラベル |
S3 + Glue / Athena / Spark |
| Apache Hudi |
CDC最適化、Upsert 高速 |
EMR + S3 |
| Delta Lake |
Databricks出身、ACID |
EMR + S3(OSS版) |
推奨: Iceberg(2024〜2025年時点でAWSネイティブサポートが最も充実)
S3 ストレージクラス最適化
| データ特性 |
推奨ストレージクラス |
コスト目安 |
| 頻繁アクセス(ホットデータ) |
S3 Standard |
$0.023/GB/月 |
| 不定期アクセス |
S3 Intelligent-Tiering |
$0.023→自動最適化 |
| 月1回未満アクセス |
S3 Standard-IA |
$0.0125/GB/月 |
| 年1〜2回アクセス |
S3 Glacier Instant Retrieval |
$0.004/GB/月 |
| 長期保管(数時間復元許容) |
S3 Glacier Flexible Retrieval |
$0.0036/GB/月 |
| 7年以上の長期アーカイブ |
S3 Glacier Deep Archive |
$0.00099/GB/月 |
5. 分析・クエリ選定
Athena vs Redshift の使い分け
Athena を選ぶ場合:
- クエリ頻度が低い(アドホック分析)
- サーバーレスで運用コストを最小化したい
- スキャン量が少ないParquet/ORC形式で保管している
- 既存の S3 Data Lake をすぐにクエリしたい
Redshift を選ぶ場合:
- 定型レポートを毎日大量に実行する
- BI ツールから高同時実行アクセスがある
- 複雑な結合・集計を高速に実行したい
- Redshift ML(SageMaker統合)を使いたい
Athena コスト最適化
パーティションプルーニング: WHERE year='2024' AND month='01'
→ スキャンデータ量を削減(コスト ∝ スキャン量)
Parquet/ORC 形式:
→ CSV比で5〜10倍のスキャン削減(列指向圧縮)
Athena Federated Query:
→ RDS/DynamoDB/Redshift をまたいだ統合クエリ
→ ETLなしでリアルタイム結合可能
Workgroup + 利用制限:
→ クエリあたりスキャン量上限を設定(コスト暴走防止)
6. ガバナンス・セキュリティ選定
| 比較軸 |
S3 + IAM のみ |
Lake Formation |
| アクセス制御の粒度 |
バケット/プレフィックス単位 |
テーブル/列/行レベル |
| 設定の複雑さ |
低(慣れている) |
中(初期設定に工数) |
| データカタログ連携 |
Glue Data Catalog を別途管理 |
統合管理 |
| 細粒度アクセス |
不可 |
可(LF-Tags、列マスク) |
| 推奨ケース |
小規模・シンプル |
エンタープライズ・規制対応 |
DataZone(データメッシュ)
DataZone が有効な場合:
- 複数チーム/ドメインが独立してデータを管理・公開したい
- データプロデューサーとコンシューマーを分離したい
- データポータル(検索・申請・承認)が必要
- Redshift / Athena / SageMaker をまたいだデータアクセス統制
7. 可視化選定
| 要件 |
推奨 |
備考 |
| AWSネイティブ BI |
QuickSight |
SPICE(インメモリ)で高速 |
| 時系列 / インフラ監視 |
Managed Grafana |
Prometheus/CloudWatch連携 |
| OpenSearch ダッシュボード |
OpenSearch Dashboards(Kibana互換) |
ログ分析・セキュリティ監視 |
| 既存 Tableau/Power BI |
Redshift / Athena JDBC/ODBC |
外部BI接続 |
8. アーキテクチャパターン早見表
パターン A: シンプル Data Lake(小〜中規模)
- データソース → S3 (Raw) → Glue ETL → S3 (Parquet) → Athena → QuickSight
- Glue Data Catalog(メタデータ)
向いている規模: TB〜数十TB / 分析クエリ中心 / チーム小規模
パターン B: DWH 中心(BI 高同時実行)
- データソース → S3 (Staging) → Glue/DMS → Redshift (DWH)
- → QuickSight / BI Tool
- → Redshift ML (SageMaker)
向いている規模: 数十TB〜PB / 定型レポート多数 / 高同時実行
パターン C: リアルタイム + バッチ (Lambda Architecture)
[リアルタイム層]
IoT/App → Kinesis Streams → Flink → OpenSearch/DynamoDB
[バッチ層]
S3 (Raw) → EMR Spark → S3 (Processed/Iceberg) → Athena/Redshift
[サービング層]
Athena / Redshift → QuickSight
OpenSearch → Dashboards
向いている規模: PB級 / リアルタイム + 深い分析の両立
パターン D: データメッシュ(大規模組織)
[ドメイン A] [ドメイン B]
S3 + Redshift S3 + Athena
│ │
└────── DataZone ───────────┘
(データカタログ・アクセス制御)
│
分析チーム / ML チーム
9. コスト観点の比較
| サービス |
主なコストドライバー |
コスト削減策 |
| S3 |
ストレージ量 + リクエスト数 |
Intelligent-Tiering / ライフサイクルポリシー |
| Glue ETL |
DPU時間 |
ジョブのDPU数最適化 / Auto Scaling有効化 |
| Athena |
スキャンデータ量($5/TB) |
Parquet化 + パーティション設計 |
| Redshift |
クラスターサイズ × 時間 |
RA3 + 自動一時停止 / Serverless |
| EMR |
EC2費用 |
Spot Instance 混在(最大90%削減) |
| Kinesis Streams |
シャード時間 + PUT数 |
オンデマンドモード活用 |
| MSK |
ブローカーインスタンス × 時間 |
Provisioned → Serverless 切替検討 |
10. 選定チェックリスト
□ データ量と増加率を見積もった(TB/月)
□ アクセスパターン(読み取り頻度・クエリ複雑度)を定義した
□ リアルタイム性の要件を確認した(秒 / 分 / 時間 / 日次)
□ 複数チームのデータアクセス制御要件を確認した
□ コンプライアンス要件(PII / GDPR / 業界規制)を確認した
□ 既存技術スタック(Kafka / Spark / dbt等)の継続利用要否を確認した
□ 初年度コストとスケール後コストの両方を見積もった
□ データ品質チェックの実装方針を決めた(Glue DQ / カスタム検査)
□ スキーマ進化・後方互換性の方針を決めた
□ Lake Formation による列/行レベルアクセス制御が必要か判断した