5.2 部署模型:公有 / 私有 / 混合
一句话
部署模型选的不是「机器放哪」,而是三条边界:合规边界(数据能出哪)、故障边界(一次故障炸多大)、成本边界(为峰值还是为均值付费);三条一起定,只看「安全」或「便宜」都会选错。
先把三个词对齐
| 模型 | 定义 | 资源归谁 | 弹性上限 | 谁运维底座 |
|---|---|---|---|---|
| 公有云 | 多租户共享池,API 自助开通,按量计费 | 云厂商 | 接近无限(受配额) | 云厂商 |
| 私有云 | 单租户专属池,具备自助、池化、API 化能力 | 自己(或托管专有区) | 受硬件存量限制 | 自己 |
| 混合云 | 公有 + 私有两种以上环境,且网络/身份/编排打通 | 混合 | 私有部分受限,公有部分弹性 | 双方分工 |
| 行业云 / 专有云 | 云厂商在合规区域内的单租户专区 | 云厂商(隔离) | 中 | 云厂商 |
| 多云 | 两个以上公有云厂商 | 各厂商 | 各厂商 | 各自 |
三个最常见的概念混淆:
| 误区 | 现实 |
|---|---|
| 私有云 = 自建机房 | 私有云的判据是自助与池化(用户能像用公有云一样申请资源);一堆 vSphere 集群 + 工单审批只是「虚拟化」,不是私有云 |
| 混合云 = 多云 | 混合云是「公有 + 私有」两种部署形态并存;多云是「多个公有云厂商」,可以全是公有 |
| 混合云 = 容灾 | 混合云解决「放哪」;容灾解决「挂了怎么办」,是拓扑问题(同城/异地/多活),见 36.4 两地三中心与多活 |
🔑 私有云的真正门槛不是硬件,是自助服务层:申请 → 审批 → 开通 → 计量 → 回收,全流程无人值守。做不到这一步,你得到的只是一批更贵的虚拟机。
三条边界怎么量
① 合规边界:数据能出哪
| 数据等级 | 典型约束 | 部署含义 |
|---|---|---|
| 个人敏感信息 / 金融账户 | 境内存储、最小必要、可审计 | 私有云或境内公有云专属区 |
| 重要数据 / 行业数据 | 出境评估、行业规范 | 私有云 + 出境通道审查 |
| 一般业务数据 | 合同与内控要求 | 公有云可接受 |
| 日志 / 指标 | 保留期、脱敏要求 | 可与业务分离部署 |
合规不是「私有云就安全」:等保、密评、审计看的是控制项是否落实(补丁、访问控制、审计日志、加密),不是机房归谁。自建环境最常见的失分项恰恰是补丁滞后与权限过大。
② 故障边界:一次故障炸多大
| 边界 | 公有云 | 私有云 | 混合云 |
|---|---|---|---|
| 单实例 | 你负责 | 你负责 | 各自负责 |
| 单可用区 | 云 SLA 兜底 | 你自己设计 | 两边都要设计 |
| 单地域 | 云 SLA + 跨区复制 | 自建第二机房 | 可跨云兜底,但控制面仍单点 |
| 单账号 / 单控制面 | 云账号即边界 | 平台自身即边界 | 身份/网络/IaC 三套,相关性故障高 |
混合云常被当成「故障隔离」的答案,但真正的单点往往在共用层:同一个 CI、同一套 IAM、同一个 DNS、同一个 Terraform state。两边都部署了,故障照样同时到达。
③ 成本边界:固定成本 vs 变动成本
自建的成本是固定的:机器买回来,用不用都计提折旧;公有云的成本是变动的:用多少付多少。这决定了单位成本的形状完全不同。
按一组明确假设算一笔账(假设值可替换,结论看结构):
- 单台 2U 双路服务器:128 vCPU / 512 GiB,¥80,000,3 年折旧
- 电力 550W × ¥0.7/kWh × 730h ≈ ¥281/月;机柜摊销 ¥80/月;网络 ¥800/月
- 1 名运维 ¥30,000/月,管 200 台 → ¥150/台/月
| 项 | 元/月 |
|---|---|
| 硬件折旧 | 2,222 |
| 电力 | 281 |
| 机柜 | 80 |
| 网络 | 800 |
| 人力摊销 | 150 |
| 合计 | 3,533(≈ ¥27.6/vCPU·月) |
这个 ¥27.6 是满负荷单价。按平均利用率折算成「有效算力单价」:
| 平均利用率 | 有效成本(元/vCPU·月) | 支撑 1000 vCPU 有效算力要买多少 | 月成本 |
|---|---|---|---|
| 5% | 552 | 20,000 vCPU | ¥55.2 万 |
| 10% | 276 | 10,000 vCPU | ¥27.6 万 |
| 20% | 138 | 5,000 vCPU | ¥13.8 万 |
| 40% | 69 | 2,500 vCPU | ¥6.9 万 |
| 70% | 39 | 1,429 vCPU | ¥3.9 万 |
| 90% | 31 | 1,111 vCPU | ¥3.1 万 |
这张表由一段三十行的计算复现,参数换成你自己机房的即可:
package main
import "fmt"
func main() {
const (
serverPrice = 80000.0 // 元/台,128 vCPU
years = 3.0
vcpu = 128.0
power = 550.0 / 1000 * 0.7 * 730 // 550W × 0.7 元/kWh × 730h
rack = 80.0 // 机柜 8000/月 ÷ 10 台
net = 800.0
ops = 30000.0 / 200 // 1 人管 200 台
)
monthly := serverPrice/years/12 + power + rack + net + ops
fmt.Printf("单台 %.0f 元/月,满负荷 %.1f 元/vCPU·月\n", monthly, monthly/vcpu)
for _, u := range []float64{0.05, 0.2, 0.4, 0.7, 0.9} {
fmt.Printf("利用率 %3.0f%% → 有效 %.1f 元/vCPU·月\n", u*100, monthly/vcpu/u)
}
}
单台 3533 元/月,满负荷 27.6 元/vCPU·月
利用率 5% → 有效 552.1 元/vCPU·月
利用率 20% → 有效 138.0 元/vCPU·月
利用率 40% → 有效 69.0 元/vCPU·月
利用率 70% → 有效 39.4 元/vCPU·月
利用率 90% → 有效 30.7 元/vCPU·月
对照公有云按量价(1 vCPU / 2 GiB 约 $31/月 ≈ ¥220/vCPU·月,汇率按 7.1 估算),自建与公有的盈亏平衡点大约在 12%–15% 的持续利用率;若公有云用 3 年预留(常见 4–6 折),平衡点抬到 20%–30%。这还没算自建的隐性成本。
| 自建常被漏算的成本 | 量级 |
|---|---|
| 冗余(N+1、双路电源、备件) | 硬件成本 ×1.3–1.5 |
| 机房、UPS、消防、带宽保底 | 按机柜/带宽计,固定支出 |
| 虚拟化/备份/监控/安全软件许可 | 按 CPU 或节点收费 |
| 迁移与扩容周期 | 采购周期周级到月级,错过峰值 |
| 故障责任 | 全在自己,含 7×24 值班 |
🔑 结论不是「自建便宜」或「公有云贵」,而是:**自建的单位成本随利用率下降而暴涨,公有云的单位成本几乎不随你的利用率变化。**所以「稳态高利用率 + 规模足够 + 运维已摊薄」才适合自建;脉冲型、增长不确定、需要全球覆盖的业务,公有的溢价买的是弹性和责任转移。
混合云的真实成本:要打通的不止网络
| 要打通的东西 | 做法 | 隐性成本 |
|---|---|---|
| 网络 | 专线 / VPN / 云联网 | 按月带宽计费,两端都付;延迟与抖动要实测 |
| 身份 | IAM 联邦、统一 SSO | 权限模型两套,审计要合并 |
| 制品 | 镜像/包跨云同步 | 跨云出网费 + 同步延迟 |
| IaC | 两套 provider、两套 state | 漂移检测、权限、密钥各一套 |
| 可观测 | 双 agent + 统一查询层 | 标签规范不统一,查一次故障要开三个控制台 |
| 数据 | 同步/备份/归档 | 出网费、一致性、合规 |
| 应急 | 两套 on-call、两套 runbook | 演练成本翻倍 |
出网费是最容易被低估的一项:按公开价目表量级 $0.09/GB 计算,每天同步 1 TB,一个月就是 30 TB ≈ $2,765——比这些数据在对象存储里放一年还贵。跨云架构设计的第一道算术题,永远是「这份数据为什么要过网」。
决策表
| 你的情况 | 选 | 关键理由 |
|---|---|---|
| 监管要求数据不出境 / 不出园区 | 私有云或境内专属区 | 合规是硬约束,不能拿成本换 |
| 流量波峰波谷 > 5× 且不可预测 | 公有云 | 为峰值买硬件是浪费 |
| 稳态利用率 > 40%、规模 > 数百台、有运维团队 | 自建/私有云 | 单位算力成本优势明显 |
| 核心数据私有 + 弹性前端公有 | 混合云 | 但要先算出网/专线账 |
| 需要全球就近接入 | 公有云多地域 + 边缘 | 自建覆盖不了 |
| 短期项目 / 一次性活动 | 公有云按量 | 无沉没成本 |
| 已有 IDC 且合同未到期 | 混合云过渡 | 逐步迁移,别推倒重来 |
| 团队 < 5 人、无专职运维 | 公有云托管服务 | 人力是最贵的固定成本 |
反模式
| 反模式 | 后果 |
|---|---|
| 为「安全」上私有云,却不做补丁与基线 | 攻击面比公有云更大,且没有云厂商的默认防护 |
| 私有云按部门竖井建设 | 变成十几个小机房,池化失效、成本翻倍 |
| 混合云只打通网络,不打通身份与制品 | 发布靠人肉拷贝,配置漂移,故障排查跨三套系统 |
| 把「多云」当容灾 | 同一份配置、同一个团队、同一个依赖 → 相关性故障照样全挂 |
| 只比较服务器单价,不算出网、专线、人力、许可 | TCO 低估 2–3 倍,迁移后才发现更贵 |
| lift & shift 上云 | 拿到虚拟化,拿不到弹性与托管收益,账单反而上涨 |
| 忽略退出成本 | 数据导出费、API 锁定、专有格式,迁移时被绑定 |
| 用「云厂商 SLA」替代自己的多可用区设计 | 单 AZ 部署,SLA 再高也救不了 |
自检
Q1 老板说「私有云更安全,我们把核心业务搬回去」。用三个问题校准这个判断。
▸ 答案:① 控制项谁落实——补丁、基线、最小权限、审计日志、加密,自建团队有没有对应流程与人?安全取决于控制项,不取决于机房归属。② 故障边界——自建机房是单 AZ 还是双 AZ?断电、空调、专线故障的 RTO 是多少?多数自建环境的可用性低于公有云多 AZ。③ 合规依据——监管要求的是「数据不出境/不出园区」还是「必须自建」?前者可用境内专属区满足,后者才需要私有云。三问之后通常得到的是「混合」而不是「全搬回去」。
Q2 按上面的模型,自建满负荷 ¥27.6/vCPU·月,公有云按量 ¥220/vCPU·月,为什么很多公司仍然上公有云?
▸ 答案:因为真实利用率不是 100%。利用率 10% 时自建有效成本 ¥276,已经高于公有云按量;而互联网业务的峰值/均值常在 5–10 倍。此外还有:现金流(capex → opex)、采购周期(周/月 vs 分钟)、责任转移(硬件故障、机房、DDoS 清洗)、全球覆盖、以及人力——自建要养一支 7×24 的团队,小公司摊不平。自建的优势只在「高利用率 + 大规模 + 已有运维体系」三者同时成立时兑现。
Q3 混合云架构里,为什么出网费可能超过计算费?给一个量化的例子。
▸ 答案:计算费是一次性的容量成本,跨环境数据流是按量、持续的成本。例:每天把 1 TB 业务数据从私有云同步到公有云做分析,月流量 30 TB;按 $0.09/GB 出网价约 $2,765/月,而跑分析的计算实例可能只要几百美元。更糟的是双向同步与备份会成倍放大。设计对策:把计算搬到数据旁边(下推)、只同步聚合结果、用压缩/去重、把冷数据留在原地按需查询。
Q4 「我们做了多云,所以不会挂」。这句话错在哪?
▸ 答案:多云只隔离了云厂商这一层故障,没隔离你自己制造的共同依赖:同一份 K8s 清单、同一个 CI/CD、同一套 IAM、同一个 DNS、同一批运维人员、同一个第三方支付/短信。任何一项挂了,多云同时挂。真正的容灾要按「故障域」设计:先列单点,再决定用多 AZ、多地域还是多云去覆盖,并用演练验证(见 36.7 演练与验证)。
Q5 一个业务白天峰值是夜间 12 倍、只旺 3 小时,数据受行业规范约束必须留在本地。怎么部署?
▸ 答案:混合:数据与合规相关的写入/存储留在本地私有云;面向用户的弹性读取层(无状态 API、CDN、静态资源、搜索副本)放公有云,按峰值弹性扩容。关键是让「跨边界」的只有脱敏后的只读数据或聚合结果,把出网量压到最低;同时明确合规边界(哪些字段不出境/不出园区)、故障切换方向(公有云挂了能否降级到本地)与演练频率。
跨篇相关:容器与虚拟机的差异决定私有云里「一台机器能切多细」,见 6.1 容器与虚拟机的本质差异;混合环境里的声明式交付见 7.1 声明式 API 与控制器模式;服务模型的选择见 5.1 服务模型:IaaS / PaaS / FaaS;地域与可用区见 5.3 地域与可用区;弹性见 5.4 弹性伸缩与自动扩缩容;托管与自建见 5.5 托管服务与自建的取舍;成本结构见 5.6 云成本结构;锁定与迁移见 5.7 云厂商锁定与迁移;合规要求见 3.1 等级保护与网络安全法、3.3 数据出境与数据主权、3.4 行业规范;容灾拓扑见 36.3 冷备 / 温备 / 热备 与 36.4 两地三中心与多活。