1. 前言

AWS 已经 18 岁,谷歌的首个云服务 App Engine 也 16 岁了,你是不是觉得云计算已经稳坐计算世界的头把交椅?但网上关于云成本和自建机房的争论却从没停过。Ruby on Rails 的创始人 David Heinemeier Hansson 大声支持自建机房,德国纽伦堡郊外的托管公司 Hetzner 也跳出来力挺自主服务器和自托管模式。

公有云、私有云还是自建机房,这场成本大战谁能笑到最后?

如果自建机房托管一台服务器比公有云便宜那么多,为什么还有公司死守云端不放?答案可能藏在“总拥有成本”(TCO)里——除了硬件钱,还得算上人力成本。我们在自建机房、私有云数据中心,以及 AWS、Azure、谷歌云 等公有云上都跑过应用,从小项目到大业务,今天就来聊聊这些选择的真实成本。

2. 三种托管方式的成本PK

项目 自建机房 私有云(数据中心) 公有云(无服务器)
搭建耗时 16小时 6小时 1小时
人力成本($120/小时) $1,920 $720 $120
硬件购置费 $500 $0 $0
维护耗时(如系统更新) 60小时 36小时 8小时
维护人力成本 $7,200 $4,320 $960
月运营成本 $6 $49 $73
第一年总人力成本 $7,700 $5,040 $1,080
第一年总系统成本 $680 $588 $876
第一年总花费 $8,380 $5,628 $1,956

公有云(无服务函数):包括百万级请求、DynamoDB 存储、CloudFront 分发和 S3 对象存储,这些是大规模应用的标配,成本用 AWS 计算器估算,没算免费额度。

自建机房:以德国电信 SVDSL 和 Vodafone EuroDOCSIS 双 WAN 网络,下载 750 Mbps,上传 80 Mbps 为例子。

私有云(数据中心):考虑了服务器、网络和带宽费用。

这三种方案都能扛住百万请求,完美适配月收入 1 万美元的中小型 SaaS 业务。

一位英国 SaaS 小老板说得好:

如果你不把自己的时间当钱,自建机房永远便宜。公有云是托管服务,连小公司都能享受规模效应,真正的省钱在人力成本上。

2.1. 人力成本和工作量怎么比?

公有云无服务函数是全托管的。有些 SaaS 项目好几个月不用管,系统升级、安全补丁、网络问题、备份这些杂活,全都丢给云平台。反过来,自建机房和私有云就得自己操心,费时费力。

2.2. 无服务函数的高可用性与网络优势

自建机房成本可控,但弹性差、网络性能也跟不上。AWS 的 CloudFront 能全球分发内容,自建机房却得让用户直连你的网络,往返时间一长,应用响应就慢。想靠自建达到公有云的性能?几乎没戏。

项目 自建机房 私有云(数据中心) 公有云(无服务函数)
位置 德国波恩 德国纽伦堡 德国法兰克福
年可用性 95% 98% 99.99%
年停机时间 438小时(18天) 175小时(7天) 1小时
可用区域 1 1 3
对等连接 2 5 > 10
东京往返时间 358ms 235ms 1.25ms
带宽峰值 0.08 Gbps 1 Gbps > 10 Gbps
最大并发连接 2000 5000 > 1万
带宽费用 无限 无限 每月 ¥3.5/GB
扩展2倍耗时 48小时 2小时 即时
磁盘故障后果 停机 停机 无影响
计算故障后果 停机 停机 无影响
24/7支持 自己搞定
系统升级后果 维护停机 维护停机
基础设施即代码 仅虚拟机使用 Terraform CloudFormation,Terraform
蓝绿部署 默认有
物理访问保护 最低 最低 ISO 27001 最低 ISO 27001
备份电源供应 最低 ISO 27001 最低 ISO 27001
可再生能源

自建机房配置:自建机房服务器就架在交换机和路由器上,紧凑实用。但像 AWS 这种公有云,运营成本里算上了人力开支,哪能跟自建机房这种“免费劳动力”比?便宜的 VPS 也一样,云厂商成本天然高。

2.3. 开发方式的三大差别

公有云、私有云和自建机房的开发思路完全不同。公有云提供虚拟机、负载均衡和数据库,你可以跑传统程序,但无服务函数模式(serverless)才是“云原生”的王道,弹性大、成本低。

项目 自建机房 私有云(数据中心) 公有云(无服务函数)
部署类型 单机程序 单机程序 无服务函数应用
架构 单体架构 单体架构 12 Factor
编程语言 Go 1.23 Go 1.23 Go 1.23
Web 框架 Go Gin Go Gin Go Gin w. Lambda Proxy
操作系统 Ubuntu (x86_64) Ubuntu (x86_64) Amazon Linux (arm64)
部署方式 手动脚本 手动脚本 自动化工具
部署停机时间 5秒 2秒 无(蓝绿部署)
服务配置 Systemd 服务文件 Systemd 服务文件 SAM YAML
服务更新停机时间 5秒 2秒
服务 IAM 基本 Linux 基本 Linux AWS IAM
本地开发环境 Docker Docker CloudWatch
数据库 bbolt bbolt AWS DynamoDB
并行化 CPU 多线程 CPU 多线程 多线程 + Fanout
调度 cron cron AWS EventBridge
调度配置 crontab crontab CloudFormation
SSL 终止要求 Go autots(Let’s Encrypt) Go autots(Let’s Encrypt) AWS ACM
SSL 实现
日志管理 本地记录 本地记录 云端统一管理
存储方案 本地硬盘 本地RAID 云存储服务

3. 何时使用何种方式?

自建机房、私有云和公有云各有优势,没一种是万能解,得看需求。

3.1. 自建机房:DIY爱好者的天堂

  • 想学服务器全套运维
  • 应用可能违规(云和数据中心不让用)
  • 需要连本地设备(比如卫星天线)
  • 跑匿名服务(比如 Tor)
  • 有特殊硬件需求(比如老式主机)
  • 地区受制裁,没云可用
  • 偶尔宕机无所谓

3.2. 私有云(数据中心):中庸之道

在数据中心托管应用与在自建机房托管相似。根据你托管的复杂程度,可能已经达到了数据中心的水平。如果没有,那么选择带有裸金属服务器或者服务器托管的数据中心,是介于自建和云之间的一个不错的折衷方案。以下是选择传统数据中心托管的一些原因:

  • 不想碰公有云,只管服务器不管网络
  • 需要云没有的硬件
  • 特定地点要最低延迟
  • 大带宽需求,成本要低
  • 偶尔离线没事

3.3. 公有云:省心首选

  • 不能接受宕机
  • 使用量波动大
  • 资源需求难预测
  • 需要高端硬件(比如 GPU)
  • 全球无缝运行
  • 合规要求多(比如 PCI DSS)
  • 自己搞不定高可用

  • 无标签
写评论...