# AWS 大数据深度解析（第 10 部分）：完整架构蓝图与成本拆解

> 社交应用数据仓库与推荐系统在 AWS 上的完整端到端架构——每一个服务都一一对应，附带真实的月度成本估算与优化策略。

- 作者: zhuermu
- 发布: 2025-05-19
- 网页版: https://zhuermu.com/blog/bigdata-deep-dive-part-10-architecture-costs/

---
本章将前 9 章的全部内容汇聚成一张完整图景。针对客户的社交应用场景，我们给出：

1. 一张完整的端到端架构图（整套系统的全景视图）
2. 每个组件的月度成本估算
3. 分阶段实施建议
4. 关键的运维与治理考量

---

## 完整端到端架构

![完整架构](/images/blog/bigdata-deep-dive/10-architecture.svg)

按层级自上而下组织：

| 层级 | 组件 |
|---|---|
| 数据源 | Aurora MySQL / DocumentDB / OpenSearch / 客户端 SDK / 用户请求 |
| 数据接入 | Aurora Zero-ETL / DMS / OSI / API GW + Lambda + MSK + Firehose |
| 数据湖 | S3 + Iceberg ODS 层 |
| 分层处理 | Glue（DWD）+ Athena（DWS）+ EMR Serverless（ADS），由 MWAA 编排 |
| 机器学习训练 | SageMaker Training + Processing + Feature Store（可选） |
| 在线服务 | DynamoDB + ElastiCache + OpenSearch k-NN + Neptune（可选）+ SM Endpoint |
| 实时管道 | Managed Flink + Lambda |
| 元数据 / 治理 | Glue Data Catalog + Lake Formation + CloudWatch + Schema Registry |

---

## 数据流概览（按时间顺序）

### 离线批处理（每晚）

```
02:00  Aurora Zero-ETL (continuous — data already in lake by early morning)
02:00  DMS DocumentDB CDC (continuous)
02:00  Firehose (continuous)
02:30  Glue Spark: dwd_user_action / dwd_post / dwd_user_relation
03:00  Athena CTAS: dws_user_daily / dws_post_daily / dws_pair_interaction
03:30  EMR Serverless: ads_user_features / ads_post_features
       EMR Serverless: ads_sample_follow / ads_sample_ctr
       EMR Serverless: ads_recall_u2u_cf
04:30  Glue Job: sync_user_features → DynamoDB
       Glue Job: sync_recall_pool → DynamoDB
05:00  SageMaker Training: train_recall_two_tower
       SageMaker Training: train_rank_lgb / deepfm
05:30  SageMaker Processing: compute_item_embeddings → OpenSearch
06:00  Lambda: deploy SageMaker Endpoints (Canary 10%)
06:30  Slack notification: DAG complete / DQ report
```

### 实时流（持续进行）

```
User click → SDK → API GW → Lambda → MSK
                                   ├─→ Firehose (60s buffer) → S3
                                   ├─→ Flink (sub-second) → DynamoDB user_realtime
                                   └─→ Lambda fraud/risk detection
```

### 在线推理流程（每次 Feed 刷新）

```
User request GET /feed (200ms budget)
  │
  ├─[5ms]──── DynamoDB user_features
  ├─[5ms]──── DynamoDB user_realtime
  ├─[1ms]──── Redis last_recommend_cache
  ├─[10ms]──── User Tower Endpoint → user embedding
  ├─[20ms]──── OpenSearch k-NN → 1000 candidates
  ├─[5ms]──── DynamoDB recall_u2u_cf → 200 candidates
  ├─[10ms]──── batch fetch 1200 item features (DynamoDB)
  ├─[30ms]──── Rank Endpoint scoring
  ├─[5ms]───── re-ranking (diversity)
  └─return Top 10
```

---

## 月度成本估算

> 注意：估算基于 us-east-1 的标价（list price）。假设条件：日活 100 万、每日 1 亿条事件、30 TB 活跃数据。实际价格取决于当前的 AWS 费率。

### 数据存储 + 接入

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **S3 Standard + IT** | 30 TB 活跃数据 + 100 TB 冷归档 | ~$700 + ~$400 = **~$1,100** |
| **Aurora MySQL** | r6g.xlarge x 2 + 存储 | **~$700** |
| **Aurora Zero-ETL to Lakehouse** | 按变更量计费 | **~$200** |
| **DocumentDB** | r6g.large x 3 | **~$1,500** |
| **DMS** | dms.t3.medium x 1 | **~$50** |
| **OpenSearch（业务搜索）** | r6g.large x 3 | **~$700** |
| **OpenSearch Ingestion** | 1 OCU | **~$170** |

### 埋点事件管道

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **API Gateway HTTP API** | 1 亿请求/天 = 30 亿/月 | **~$3,000** |
| **Lambda（数据增强）** | 30 亿次调用，128MB x 50ms | **~$300** |
| **MSK（预置型）** | m7g.large x 3 + 5 TB 存储 | **~$500** |
| **Firehose** | 30 亿条记录 + Parquet 转换 | **~$300** |

### 分层处理 + 编排

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **Glue ETL** | 50 DPU-小时/天 | **~$650** |
| **Athena** | 每月扫描 100 TB（含即席查询） | **~$500** |
| **EMR Serverless** | ADS 处理 100 vCPU-小时/天 | **~$300** |
| **MWAA** | mw1.small | **~$400** |

### 机器学习训练

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **SageMaker Training** | g5.xlarge x 8h x 1/天 x 30 天（双塔 + LightGBM 排序） | **~$340** |
| **SageMaker Processing** | m5.2xlarge x 2h x 1/天 x 30 天（物品向量预计算） | **~$25** |
| **SageMaker Endpoint（User Tower）** | ml.c5.xlarge x 2，7x24 | **~$200** |
| **SageMaker Endpoint（Rank）** | ml.c5.2xlarge x 4，7x24 | **~$800** |

### 在线服务层（推荐推理读路径）

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **DynamoDB** | 50K WCU + 200K RCU + 500GB | **~$1,500** |
| **ElastiCache Redis** | r7g.large x 2 | **~$300** |
| **OpenSearch k-NN** | r6g.xlarge x 3 + 500GB | **~$1,200** |
| **Neptune（第 3 阶段）** | r6g.large x 2 | **~$700** |

### 实时管道

| 服务 | 用量 | 月度成本 |
|---|---|---|
| **Managed Flink** | 4 KPU | **~$330** |

### 治理 / 监控

| 服务 | 月度成本 |
|---|---|
| Glue Catalog | ~$10 |
| Lake Formation | $0（免费额度） |
| CloudWatch | ~$200 |
| 数据传输 | ~$200 |

### 汇总（按阶段拆分，对应客户 T+1 需求与全量上线）

| 模块 | 第 1 阶段（T+1 数据基座） | 第 2 阶段（+ML v1） | 第 3 阶段及以后（实时 + 全量） |
|---|---|---|---|
| 数据存储 + 接入 | ~$3,200 | ~$4,200 | ~$5,400 |
| 埋点事件管道 | ~$3,400（无 MSK，仅 Firehose） | ~$3,400 | ~$4,100（+MSK） |
| 分层处理 + 编排 | ~$1,500 | ~$1,850 | ~$1,850 |
| 机器学习训练 | $0 | ~$700 | ~$1,400 |
| 在线服务 | $0 | ~$2,000（DDB+Redis+OS kNN） | ~$3,700（+Neptune 可选） |
| 实时管道（Flink） | $0 | $0 | ~$330 |
| 跨可用区流量 + 治理 + 杂项 | ~$300 | ~$400 | ~$600 |
| **合计（标价）** | **~$8,400/月** | **~$12,550/月** | **~$17,400/月（不含 Neptune ~$700）** |

> 注意：MSK 跨可用区复制流量、CloudWatch 日志接入以及 NAT Gateway 流量，合计每月可能增加数百美元——这些在估算中经常被忽略。
>
> 以上均为**标价**估算。结合 EDP/PPA 折扣、预留实例（Reserved Instances）和 Savings Plans，实际成本通常会**下降 20-40%**。

### 成本分布（第 3 阶段全量标价的心智模型）

```
Ingestion + Storage   ████████ 31%
Event Tracking        ███████  24%
Online Serving        ██████   21%
Compute / Processing  ███      11%
ML Training           ██        8%
Other (incl. cross-AZ)██       5%
```

**最值得优化的三个方面：**

1. **API Gateway 调用量**——让 SDK 批量合并事件上传，可降低 50% 以上的成本
2. **DynamoDB**——从按需（On-Demand）切换到预置（Provisioned）+ Auto Scaling，可节省 40% 以上；采用最终一致性读取还能再省 50%
3. **跨可用区流量 / NAT Gateway**——为 S3 / DDB / Athena 使用 VPC Endpoint 走私有网络，通常可节省数百到数千美元

---

## 分阶段实施建议

### 第 1 阶段：数据基座（1-1.5 个月）

**目标：** 让埋点、业务数据库和 ODS 层端到端跑通；Athena 能够查询所有数据源。

- Aurora Zero-ETL（路径 1）/ DMS（路径 3）双链路 POC
- 启用 DocumentDB Change Streams + DMS
- OpenSearch Ingestion 管道：ES 到 S3
- API GW + Lambda + MSK + Firehose 埋点管道
- Glue Catalog 注册所有 ODS 表
- DWD v1（Glue Job：清洗 + IP 转地理位置）
- MWAA 运行基线 DAG

**交付物：** T+1 数据完整落湖；Athena 可查询所有 ODS/DWD 表。

### 第 2 阶段：首个模型版本（1-2 个月）

**目标：** 推荐管道端到端跑通，Top 10 推荐具备基线。

- DWS / ADS 层 SQL 编排
- 关注样本表 + CTR 样本表（PIT 正确）
- 用户特征 / 内容特征宽表
- LightGBM 排序模型 + 双塔召回模型训练
- OpenSearch k-NN 物品向量索引
- DynamoDB 同步用户特征 + 召回池
- SageMaker Endpoint 部署：User Tower + Rank Model
- 推荐服务（ECS）端到端集成
- A/B 测试平台集成

**交付物：** 核心指标（CTR / 关注转化率 / 留存）具备基线。

### 第 3 阶段：进阶能力（2-3 个月）

**目标：** 多路召回、实时特征、模型升级。

- Managed Flink 实时特征管道
- DynamoDB user_realtime 上线
- 排序模型升级为 DeepFM / DIN
- 多路召回（图召回 / 兴趣标签 / 热门）
- 引入 Neptune + Neptune ML
- SageMaker Feature Store 全面迁移（若成本可行）

### 第 4 阶段：持续优化（长期进行）

- 冷启动优化（新用户 / 新内容）
- 多任务模型（MMoE / PLE）
- 重排序（多样性 / 公平性）
- 自动化模型监控（Model Monitor）
- 成本优化（RI / Savings Plans / 缓存）

---

## 治理与运维

### 数据质量（DQ）

在每个 DAG 步骤之后运行 DQ 检查：

| 检查类型 | 示例 |
|---|---|
| 行数 | dwd_user_action 当日 > 1 亿 |
| 唯一性 | event_id 无重复 |
| 空值率 | user_id 空值 < 0.1% |
| 取值范围 | age 介于 0 到 150 之间 |
| 一致性 | dws_user_daily 总点击数 = ods_event 当日点击数 |

工具：**AWS Glue Data Quality**（基于 Deequ）/ 自定义 SQL 检查。

### 成本管理

- **CloudWatch Anomaly Detection**——账单异常告警
- **Athena Workgroup Cost Limit**——防止失控查询导致成本飙升
- **DynamoDB Auto Scaling**——流量下降时自动缩容
- **S3 Intelligent-Tiering**——为所有存储桶启用
- **Cost Allocation Tags**——为每个资源打上 `team=algo / team=da / team=infra` 标签，实现按团队分摊账单

### 安全

- **静态加密：** S3 SSE-KMS / DynamoDB 加密 / RDS 加密
- **VPC Endpoints：** S3 / DynamoDB / Athena 走私有网络，绝不经公网
- **IAM Role 最小权限**
- **Lake Formation 列级权限：** 对手机号 / 身份证号进行脱敏
- **GuardDuty + Security Hub：** 威胁检测

### 灾难恢复

- **S3 跨区域复制**（用于双活需求）
- **DynamoDB Global Tables**（跨区域实时同步）
- **Aurora Global Database**（跨区域容灾）

### 模型治理

- 模型版本管理（SageMaker Model Registry）
- 金丝雀部署（Production Variants 加权流量切分）
- 通过 Model Monitor 检测漂移
- 定时重训练（每周 / 每日）+ 自动化评估

---

## 2026 年 AWS 数据/AI 技术栈更新（速查）

针对本架构的“当下 vs 一年前”对比，帮助客户判断该采纳哪些新能力：

| 模块 | 2025 年初 | 2026 年 5 月现状 |
|---|---|---|
| **Iceberg 托管** | S3 Tables 刚 GA | S3 Tables + 自动 compaction、快照过期、复制、IT 分层 |
| **Zero-ETL** | Aurora to Lakehouse 刚 GA | + RDS MySQL / DynamoDB / Salesforce / SAP / ServiceNow / Zendesk to Lakehouse（大量新集成） |
| **Glue** | 4.0（Spark 3.3） | **Glue 5.0**（Spark 3.5 + Iceberg 自动维护） |
| **Athena** | Engine v3 | + 联邦 Spark / Iceberg 物化视图（部分区域预览） |
| **OpenSearch k-NN** | 默认 nmslib / Lucene | **生产环境推荐 Faiss**，nmslib 已弃用 |
| **向量存储** | OpenSearch k-NN | + **S3 Vectors GA**（适合 RAG / 冷向量） |
| **SageMaker 品牌** | 刚拆分为 4 大支柱 | Unified Studio GA、Bedrock IDE 集成、Q Developer 内嵌 |
| **GenAI** | Bedrock 基础模型 | + **Amazon Nova 系列**（Pro/Premier/Canvas/Reel）、**Bedrock AgentCore**、**Knowledge Bases + S3 Vectors / 结构化数据检索** |
| **HyperPod** | 已 GA | + 任务治理 / 弹性训练计划 / Inference Components |
| **Q in QuickSight** | Topics + Q&A | + Scenarios（自然语言 what-if）、自动生成 Topic |

**对客户社交应用推荐场景的具体影响：**

- S3 Tables 自动 compaction——**省去一个维护作业**
- Glue 5.0 + Iceberg——**DWD 处理性能提升**
- Faiss 引擎——**降低 OpenSearch k-NN 召回延迟**
- Bedrock + Knowledge Bases——为未来“AI 内容审核 / 评论摘要 / 智能客服”做好准备，无需自训 LLM

---

## 留给客户的开放问题

在完成 POC 之前需要厘清的问题：

1. DocumentDB 版本：5.0（已确认）——Change Streams 可用
2. 延迟要求：T+1（已确认）——第 1-2 阶段无需 Flink
3. ES 接入：需要（已确认）——第 1 阶段运行 OSI
4. ES 里存了什么？是否与 MySQL 重叠？
5. 推荐场景：关注推荐 / Feed / PYMK——哪个是优先级？
6. 现有的埋点 SDK / A/B 平台 / 数据团队规模？
7. 区域选择：us-east-1 / ap-northeast-1 / 其他？
8. 合规要求：GDPR / 中国 PIPL？

这些问题决定了具体的取舍，应在 Discovery 阶段厘清。

---

## 系列总结

恭喜你读到这里。至此你已经涵盖了：

- 大数据基础（OLTP / OLAP / 数据湖 / Lakehouse / CDC / 分层架构）
- S3 + Parquet + Iceberg 存储基础
- DMS / Zero-ETL / OSI / Firehose / MSK 数据接入
- Glue Catalog / Athena / Lake Formation 元数据 + 查询
- Glue / EMR / Flink / Lambda / MWAA 计算与编排
- 推荐系统漏斗 / 双塔 / 特征工程 / PIT
- DynamoDB / Redis / OpenSearch k-NN / Neptune 在线服务
- SageMaker 全生命周期
- 端到端架构 + 成本估算

### 延伸资源

| 主题 | 链接 |
|---|---|
| AWS 现代数据架构 | https://docs.aws.amazon.com/whitepapers/latest/modern-data-architecture-rays-on-aws/modern-data-architecture-rays-on-aws.html |
| Apache Iceberg on AWS | https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/introduction.html |
| 在 AWS 上构建推荐系统 | https://aws.amazon.com/solutions/implementations/personalized-recommendations/ |
| AWS Big Data Blog | https://aws.amazon.com/blogs/big-data/ |
| Iceberg 官方 | https://iceberg.apache.org/ |
| Feast（开源 Feature Store） | https://feast.dev/ |
| DGL（图神经网络库） | https://www.dgl.ai/ |

---

## 常见问题

### 在 AWS 上运行一套生产级大数据 + 推荐系统需要多少成本？

对于一个日活 100 万、每日 1 亿条事件的社交应用，涵盖 Aurora、MSK、S3、Glue、EMR Serverless、DynamoDB、ElastiCache、OpenSearch、SageMaker 端点和 MWAA，预计每月约 3,000 至 5,000 美元——具体取决于采用预留还是按需计价。

### AWS 大数据的关键成本优化策略有哪些？

利用 Iceberg 分区裁剪和列式存储格式来降低 Athena 扫描成本。使用 EMR Serverless 和 Glue 自动伸缩来避免集群空转。为冷数据选择 S3 Intelligent-Tiering。对稳态运行的 DynamoDB 和 ElastiCache 负载使用预留容量。


---

## 参考资料

- [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html) — AWS Documentation
- [Amazon S3 pricing](https://aws.amazon.com/s3/pricing/) — AWS
- [Amazon EMR Management Guide](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) — AWS Documentation
