capacity-planning-helper
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCapacity Planning Helper
容量规划助手
Right-size infrastructure for current and future needs.
为当前和未来需求匹配合适规模的基础设施。
Traffic Forecasting
流量预测
typescript
interface TrafficForecast {
current: {
dailyUsers: number;
peakRPS: number;
avgRPS: number;
};
projected: {
timeframe: "6m" | "12m" | "24m";
dailyUsers: number;
peakRPS: number;
avgRPS: number;
growthRate: number;
};
}
const forecast: TrafficForecast = {
current: {
dailyUsers: 100000,
peakRPS: 500,
avgRPS: 200,
},
projected: {
timeframe: "12m",
dailyUsers: 500000, // 5x growth
peakRPS: 2500,
avgRPS: 1000,
growthRate: 4.0, // 400% growth
},
};typescript
interface TrafficForecast {
current: {
dailyUsers: number;
peakRPS: number;
avgRPS: number;
};
projected: {
timeframe: "6m" | "12m" | "24m";
dailyUsers: number;
peakRPS: number;
avgRPS: number;
growthRate: number;
};
}
const forecast: TrafficForecast = {
current: {
dailyUsers: 100000,
peakRPS: 500,
avgRPS: 200,
},
projected: {
timeframe: "12m",
dailyUsers: 500000, // 5x growth
peakRPS: 2500,
avgRPS: 1000,
growthRate: 4.0, // 400% growth
},
};Resource Estimation
资源估算
typescript
interface ResourceNeeds {
compute: {
instanceType: string;
instanceCount: number;
cpu: number;
memory: number;
};
database: {
instanceType: string;
instanceCount: number;
storage: number;
iops: number;
};
cache: {
instanceType: string;
nodes: number;
memory: number;
};
}
function estimateResources(forecast: TrafficForecast): ResourceNeeds {
const { peakRPS } = forecast.projected;
// Rule of thumb: 100 RPS per instance (with headroom)
const instanceCount = Math.ceil(peakRPS / 100);
// Database: 1000 connections per 2vCPU
const dbInstances = Math.ceil((peakRPS * 2) / 1000);
return {
compute: {
instanceType: "t3.large",
instanceCount: instanceCount * 1.5, // 50% headroom
cpu: 2 * instanceCount,
memory: 8 * instanceCount,
},
database: {
instanceType: "db.r6g.xlarge",
instanceCount: dbInstances,
storage: 1000, // GB
iops: 10000,
},
cache: {
instanceType: "cache.r6g.large",
nodes: 2, // Primary + replica
memory: 12, // GB
},
};
}typescript
interface ResourceNeeds {
compute: {
instanceType: string;
instanceCount: number;
cpu: number;
memory: number;
};
database: {
instanceType: string;
instanceCount: number;
storage: number;
iops: number;
};
cache: {
instanceType: string;
nodes: number;
memory: number;
};
}
function estimateResources(forecast: TrafficForecast): ResourceNeeds {
const { peakRPS } = forecast.projected;
// Rule of thumb: 100 RPS per instance (with headroom)
const instanceCount = Math.ceil(peakRPS / 100);
// Database: 1000 connections per 2vCPU
const dbInstances = Math.ceil((peakRPS * 2) / 1000);
return {
compute: {
instanceType: "t3.large",
instanceCount: instanceCount * 1.5, // 50% headroom
cpu: 2 * instanceCount,
memory: 8 * instanceCount,
},
database: {
instanceType: "db.r6g.xlarge",
instanceCount: dbInstances,
storage: 1000, // GB
iops: 10000,
},
cache: {
instanceType: "cache.r6g.large",
nodes: 2, // Primary + replica
memory: 12, // GB
},
};
}Cost Estimation
成本估算
typescript
interface CostEstimate {
monthly: {
compute: number;
database: number;
cache: number;
storage: number;
bandwidth: number;
total: number;
};
annual: number;
}
const pricing = {
"t3.large": 0.0832, // $/hour
"db.r6g.xlarge": 0.336,
"cache.r6g.large": 0.226,
storage: 0.1, // $/GB/month
bandwidth: 0.09, // $/GB
};
function estimateCost(
resources: ResourceNeeds,
trafficGB: number
): CostEstimate {
const hoursPerMonth = 730;
const monthly = {
compute:
resources.compute.instanceCount * pricing["t3.large"] * hoursPerMonth,
database:
resources.database.instanceCount *
pricing["db.r6g.xlarge"] *
hoursPerMonth,
cache: resources.cache.nodes * pricing["cache.r6g.large"] * hoursPerMonth,
storage: resources.database.storage * pricing.storage,
bandwidth: trafficGB * pricing.bandwidth,
total: 0,
};
monthly.total = Object.values(monthly).reduce((sum, cost) => sum + cost, 0);
return {
monthly,
annual: monthly.total * 12,
};
}typescript
interface CostEstimate {
monthly: {
compute: number;
database: number;
cache: number;
storage: number;
bandwidth: number;
total: number;
};
annual: number;
}
const pricing = {
"t3.large": 0.0832, // $/hour
"db.r6g.xlarge": 0.336,
"cache.r6g.large": 0.226,
storage: 0.1, // $/GB/month
bandwidth: 0.09, // $/GB
};
function estimateCost(
resources: ResourceNeeds,
trafficGB: number
): CostEstimate {
const hoursPerMonth = 730;
const monthly = {
compute:
resources.compute.instanceCount * pricing["t3.large"] * hoursPerMonth,
database:
resources.database.instanceCount *
pricing["db.r6g.xlarge"] *
hoursPerMonth,
cache: resources.cache.nodes * pricing["cache.r6g.large"] * hoursPerMonth,
storage: resources.database.storage * pricing.storage,
bandwidth: trafficGB * pricing.bandwidth,
total: 0,
};
monthly.total = Object.values(monthly).reduce((sum, cost) => sum + cost, 0);
return {
monthly,
annual: monthly.total * 12,
};
}Scale Triggers
扩缩容触发规则
yaml
undefinedyaml
undefinedauto-scaling-config.yml
auto-scaling-config.yml
scaling:
triggers:
- metric: cpu_utilization
threshold: 70%
action: scale_up
cooldown: 5m
- metric: cpu_utilization
threshold: 30%
action: scale_down
cooldown: 15m
- metric: request_queue_depth
threshold: 1000
action: scale_up
cooldown: 1mlimits:
min_instances: 2
max_instances: 20
schedule:
# Pre-scale for known traffic patterns
- time: "08:00"
target_instances: 10
- time: "22:00"
target_instances: 4
undefinedscaling:
triggers:
- metric: cpu_utilization
threshold: 70%
action: scale_up
cooldown: 5m
- metric: cpu_utilization
threshold: 30%
action: scale_down
cooldown: 15m
- metric: request_queue_depth
threshold: 1000
action: scale_up
cooldown: 1mlimits:
min_instances: 2
max_instances: 20
schedule:
# Pre-scale for known traffic patterns
- time: "08:00"
target_instances: 10
- time: "22:00"
target_instances: 4
undefinedCost/Performance Tradeoffs
成本/性能权衡
markdown
undefinedmarkdown
undefinedInfrastructure Options
基础设施选项
Option 1: Cost-Optimized ($2,500/mo)
选项1:成本优化型(每月2500美元)
- Compute: 4x t3.large
- Database: 1x db.r6g.large
- Cache: 1x cache.r6g.medium
- Pros: Lowest cost
- Cons: Limited headroom, potential latency issues
- 计算资源:4台 t3.large
- 数据库:1台 db.r6g.large
- 缓存:1台 cache.r6g.medium
- 优势: 成本最低
- 劣势: 预留空间有限,可能存在延迟问题
Option 2: Balanced ($5,000/mo)
选项2:均衡型(每月5000美元)
- Compute: 8x t3.large
- Database: 2x db.r6g.xlarge
- Cache: 2x cache.r6g.large
- Pros: Good headroom, redundancy
- Cons: Moderate cost
- 计算资源:8台 t3.large
- 数据库:2台 db.r6g.xlarge
- 缓存:2台 cache.r6g.large
- 优势: 充足的预留空间,具备冗余能力
- 劣势: 成本适中
Option 3: Performance-Optimized ($10,000/mo)
选项3:性能优化型(每月10000美元)
- Compute: 12x c6g.xlarge
- Database: 3x db.r6g.2xlarge
- Cache: 3x cache.r6g.xlarge
- Pros: Maximum performance, high availability
- Cons: Higher cost
- 计算资源:12台 c6g.xlarge
- 数据库:3台 db.r6g.2xlarge
- 缓存:3台 cache.r6g.xlarge
- 优势: 性能最大化,高可用性
- 劣势: 成本较高
Recommendation
建议
Start with Option 2, monitor for 1 month, adjust based on:
- Actual CPU/memory utilization
- Database query performance
- Cache hit rates
undefined从选项2开始,监控1个月后,根据以下数据调整:
- 实际CPU/内存使用率
- 数据库查询性能
- 缓存命中率
undefinedCapacity Planning Spreadsheet
容量规划表格
| Metric | Current | 6mo Proj | 12mo Proj | Notes |
|---------------------|---------|----------|-----------|--------------------------|
| Daily Users | 100k | 250k | 500k | 5x growth expected |
| Peak RPS | 500 | 1250 | 2500 | Linear w/ users |
| DB Connections | 100 | 250 | 500 | 2 per instance |
| Storage (GB) | 100 | 300 | 1000 | User data + logs |
| Bandwidth (TB) | 1 | 3 | 10 | Images + video |
| Instance Count | 4 | 10 | 20 | Auto-scaling |
| Monthly Cost | $2k | $5k | $10k | AWS estimate || 指标 | 当前值 | 6个月预测 | 12个月预测 | 说明 |
|---------------------|---------|----------|-----------|--------------------------|
| 日活用户数 | 100k | 250k | 500k | 预计增长5倍 |
| 峰值RPS | 500 | 1250 | 2500 | 随用户量线性增长 |
| 数据库连接数 | 100 | 250 | 500 | 每个实例2个连接 |
| 存储容量(GB) | 100 | 300 | 1000 | 用户数据+日志 |
| 带宽(TB) | 1 | 3 | 10 | 图片+视频 |
| 实例数量 | 4 | 10 | 20 | 自动扩缩容 |
| 月度成本 | $2k | $5k | $10k | AWS估算值 |Output Checklist
输出检查清单
- Traffic forecast
- Resource estimates
- Cost analysis
- Scale triggers
- Performance targets
- Growth plan ENDFILE
- 流量预测
- 资源估算
- 成本分析
- 扩缩容触发规则
- 性能目标
- 增长规划 ENDFILE