# Firestore 与 GCP Secret Manager 成本比较

## 概述

本文档比较了在 Cloud Scheduler 服务环境中使用 Google Cloud Firestore 和 Google Cloud Secret Manager 存储和检索认证凭据的成本。比较重点是 `css-enhance.md` 中概述的方法在调度器操作期间频繁访问密钥的成本影响。

## 定价模型

### Google Cloud Firestore 定价

#### 操作
- **文档读取**: 每 100,000 次读取 $0.06
- **文档写入**: 每 100,000 次写入 $0.18
- **文档删除**: 每 100,000 次删除 $0.02
- **免费套餐**: 每日 50,000 次读取、20,000 次写入、20,000 次删除

#### 存储
- **数据存储**: 每 GB 每月 $0.18
- 包括文档数据、元数据和索引
- **免费套餐**: 每月 1 GB 存储

#### 网络出口
- **出站数据传输**: 每 GB $0.12
- **免费套餐**: 每月 10 GB 网络出口

### Google Cloud Secret Manager 定价

#### 活动密钥版本
- **活动密钥版本**: 每个版本每个区域 $0.06
- 已销毁的密钥版本免费
- **免费套餐**: 所有客户可免费使用六个密钥版本

#### 操作
- **访问操作**: 每 10,000 次操作 $0.03
- **管理操作**: 免费

#### 通知
- **轮换通知**: 每次轮换 $0.05
- 对每个发送到 Pub/Sub 主题的 `SECRET_ROTATE` 消息收费

## Cloud Scheduler 使用案例的成本比较

### 场景分析

#### 低使用量 (100 个团队，每天 1000 次调度器执行)
- **Firestore**:
  - 每日读取: 1,000 次（每次执行一次）
  - 每月读取: 30,000 次
  - 成本: $0（在免费套餐内）
  - 存储: ~$0.01（最小凭据数据）

- **Secret Manager**:
  - 活动密钥: 100 个
  - 每月成本: 100 × $0.06 = $6.00
  - 每月操作: 30,000 次
  - 操作成本: (30,000 ÷ 10,000) × $0.03 = $0.09
  - 总计: 每月 $6.09

#### 中等使用量 (500 个团队，每天 10,000 次调度器执行)
- **Firestore**:
  - 每日读取: 10,000 次
  - 每月读取: 300,000 次
  - 成本: (300,000 ÷ 100,000) × $0.06 = $0.18
  - 存储: ~$0.05

- **Secret Manager**:
  - 活动密钥: 500 个
  - 每月成本: 500 × $0.06 = $30.00
  - 每月操作: 300,000 次
  - 操作成本: (300,000 ÷ 10,000) × $0.03 = $0.90
  - 总计: 每月 $30.90

#### 高使用量 (1000 个团队，每天 50,000 次调度器执行)
- **Firestore**:
  - 每日读取: 50,000 次
  - 每月读取: 1,500,000 次
  - 成本: (1,500,000 ÷ 100,000) × $0.06 = $0.90
  - 存储: ~$0.10

- **Secret Manager**:
  - 活动密钥: 1,000 个
  - 每月成本: 1,000 × $0.06 = $60.00
  - 每月操作: 1,500,000 次
  - 操作成本: (1,500,000 ÷ 10,000) × $0.03 = $4.50
  - 总计: 每月 $64.50

## 成本分析总结

### Firestore 更具成本效益的情况
- **低使用量场景**，在免费套餐范围内
- **访问频率较低**的应用程序
- 已经为其他目的使用 Firestore 的情况

### Secret Manager 更具成本效益的情况
- **高访问频率**场景（大量调度器执行）
- 需要**高级安全功能**的应用程序（版本控制、审计跟踪、自动轮换）
- **安全合规**效益超过成本差异时

### 盈亏平衡分析
- 对于 1000 个团队每天 50,000 次执行，Secret Manager 成本约为 $64.50，而 Firestore 约为 $0.90
- 然而，Secret Manager 提供了显著更好的安全功能
- 高使用量场景的成本差异约为**每月 $63.60**

## 建议

### 对于 Cloud Scheduler 服务
1. **如果成本是主要考虑因素**: 使用 Firestore 进行凭据存储，特别是当使用量较低且在免费套餐限制内时。

2. **如果安全是主要考虑因素**: 使用 Secret Manager，尽管成本更高，因为它提供：
   - 更好的安全控制
   - 审计跟踪
   - 自动轮换功能
   - 专用的密钥管理功能

3. **混合方法**:
   - 对高安全凭据使用 Secret Manager
   - 对不太敏感的数据使用 Firestore
   - 实施缓存以减少 API 调用

4. **优化策略**:
   - 实施积极的缓存以减少 API 调用
   - 使用 `css-secret-notifications.md` 中的事件驱动方法以最小化不必要的获取
   - 监控使用模式以优化服务选择

## 结论

对于 Cloud Scheduler 服务用例，其中凭据在每次调度器执行时都访问，Secret Manager 的运营成本高于 Firestore。然而，Secret Manager 的安全效益（版本控制、审计日志、轮换）可能证明额外成本是合理的，特别是对于敏感的身份验证凭据。选择取决于成本效率和安全要求之间的权衡。

## 参考资料

1. Google Cloud Firestore 定价: https://firebase.google.com/docs/firestore/billing-example
2. Google Cloud Secret Manager 定价: https://cloud.google.com/security/products/secret-manager
3. Google Cloud 定价计算器: https://cloud.google.com/products/calculator
4. Google Cloud Secret Manager 文档: https://docs.cloud.google.com/secret-manager/docs/