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 两地三中心与多活。