我第一台云服务器是两年前买的,首年 99 块,第二年续费 480。 当时我盯着那个价格看了很久,最后还是续了——不是因为觉得值, 而是因为所有东西都在上面:网站文件、数据库、图片、 配置、还有那堆我已经忘了当初为什么这么写的东西。
那次之后我想明白了一件事:问题不在于服务器贵,而在于我把自己绑在了上面。
把「机器」和「数据」分开想
大部分人买服务器的顺序是:买机器 → 装环境 → 放数据。 数据是最后才考虑的,于是它自然就长在了机器上。
但换个顺序会舒服很多:
- 数据是资产,要独立存放、定期备份、随时可取
- 机器是消耗品,用完就扔,扔了不心疼
- 配置要代码化,能一条命令重建
这个顺序一旦反过来,很多决策会变得非常轻松。比如: 「这家续费太贵了」——那就换一家,反正数据不在机器上。
具体怎么分层
我把东西按「换机器时要不要跟着走」分成三层:
| 层级 | 放什么 | 放哪里 | 换机器时 |
|---|---|---|---|
| 数据层 | 数据库、用户上传的图片、文章源文件 | 对象存储 / 云数据库 | 不用动 |
| 运行层 | 运行时、依赖、临时文件 | 服务器本地 | 重建 |
| 配置层 | Nginx 配置、环境变量、部署脚本 | Git 仓库 | git clone 拉回来 |
三层里只有中间那层是「可以随便死」的。
一个具体的例子
我现在的博客是纯静态的,数据层就是一堆 Markdown 文件, 存在对象存储里,本地也留一份。服务器上只跑一个 Nginx, 配置就下面这几行:
server {
listen 80;
server_name example.com;
root /www/blog;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
哪天这台机器到期了、涨价了、或者机房炸了,我的操作是:
- 随便买一台新机器,五分钟
- 装 Nginx,把配置粘进去
- 从对象存储把文件同步下来
- 改 DNS 解析
全程不到半小时,其中二十分钟在等 DNS 生效。
判断一个架构好不好,有个很朴素的标准:
换掉其中任何一个部件,你需要花多久?
代价是什么
说实话,这套做法不是没有成本:
- 多了一层复杂度。本地开发要模拟对象存储,调试麻烦一点
- 多花一点钱。对象存储和云数据库通常比塞在服务器上贵
- 需要一开始就想清楚。事后改造比一开始做对难得多
但如果你的项目打算活过一年,我仍然觉得划算。 因为云服务器这个市场,首年便宜、续费翻倍几乎是默认规则, 你早晚要面对「换还是不换」这个问题。
最后
我不是说所有东西都该上云。小项目、临时项目、玩具项目, 直接塞在服务器上完全没问题,别过度设计。
我想说的只是:在动手之前,先问一句「这些东西以后要怎么搬走」。 问过这一句,很多选择会不一样。