云服务器和独立服务器都能跑同样的系统,差别在资源是不是被固定划给你,以及出了问题你能控制到哪一层。把它们当成两种规格去比价格,经常会比错。比的应该是同一负载在两种形态下的月成本和迁移成本。

云服务器适合负载会变、希望按月甚至更快调整配置的业务。开发测试、活动页面、需要快速复制的节点,用云更省事。机器的处理器和磁盘通常来自资源池,邻居的高峰有可能影响你的延迟。这种影响不一定经常发生,但你很难在订单里把它完全排除。云的价值是弹性:配置可以加大,也可以在不用时缩回去。如果业务一年到头都顶着同一套满载配置,弹性这部分你并没有用上,只是在按云的方式为一台长期满载的机器付费。
独占的好处是可预期,代价是调整慢
独立服务器把一整台机器划给你。磁盘、内存和处理器不跟别人共享,性能曲线更可预期,适合数据库、游戏逻辑、长期满载的转码,以及对磁盘延迟敏感的服务。它的代价是调整慢。加内存、换磁盘通常要停机或迁移,不能在控制台里点一下就完成。因此独立服务器更适合已经知道规模的业务,而不是还在每天改架构的试验环境。交付时要把这台机器的资源边界写清楚,避免以后把「暂时空着」理解成可以无限加进程。
不该混在同一台机器上的,是资源特征相反的负载。数据库和大规模文件下载放在一起,下载会把磁盘和带宽占满,数据库延迟跟着抖动。对外网站和内部跳板放在一起,权限边界会变得很差。把暂时没人用的云主机当成备份仓库,也容易在账单和安全策略上留下缺口。备份应当是任务,不是一台被遗忘的机器。
迁移时不要一次性搬完。可以先把无状态的前端或活动页放到云上,数据库仍留在独立服务器,用内网或专线把查询连回去,观察一周的延迟和错误率。如果这段链路在高峰可以接受,再决定要不要继续拆。如果每次查询都明显变慢,说明这两部分必须留在同一台或同一个机房,省下的那台机器并不成立。记录这次观察,下一次有人提议「都放一起更便宜」时,就有一组对照数据,而不是只剩一句感觉。
一个清楚的分法是:会变的、要快速复制的放在云上;要稳定吃满、要独占磁盘的放在独立服务器上。两者之间用网络把接口连起来,而不是为了省一台机器把所有进程塞进同一个系统。价格可以比较,但比较之前先把负载分开,否则最便宜的那一行往往也是以后最难拆的那一行。