# 你用的公有云都没做过测试

LLMS 索引： [llms.txt](/llms.txt)

---

> 原作者：冷技术热思考 · [微信公众号转载页](https://mp.weixin.qq.com/s/YtuJGDP1FgTVJnMlOCgsmQ)

![图片](01.webp)

前两天腾讯云遭遇重大故障，影响范围很大，几乎所有API服务不可用，和之前阿里云的严重故障类似。这个事情当然马上引起了业界广泛的分析和讨论，比如冯若航就迅速分享了他的看法（[腾讯云：颜面尽失的草台班子](/cloud/tencent-disgrace/)），我也说下我的理解。

我的理解主要来自于我做云和做软件的经验。

我是从2012年开始带领团队开发网易云。我们主要服务的是集团的非游戏业务，如云音乐、新闻、等，云课堂、Lofter、云信/易盾/七鱼等，也少量服务过外部客户。尽管我们的平台较为专注且应用规模较小，因此故障率相对较低，但也没能幸免每隔四五年来一次较为严重的故障。

同时，我也带团队开发多种软件业务，如网易数帆，涵盖大数据、云原生等方向。这些软件都私有化部署在客户环境。尽管我们主要服务中大型客户，但客户数量也有数百家。

一边做云一边做软件，我就发现云平台和一般软件有本质区别。云计算平台虽然也是软件的一种，但其部署和服务方式与传统软件截然不同，这种差异就使得云计算平台的稳定性面临巨大挑战。

核心是，公有云是没法测试的。

公有云的系统规模极其庞大，不可能建立一个等同规模的测试环境进行全面测试。公有云系统还特别复杂，本身很复杂，还要集成那么多的软件和硬件。这么复杂的系统又没法测试，有时来个大故障也就情有可原了。

说到复杂工程，大家常说一个词叫火箭科学。大家都认为火箭是非常复杂的，很不好做，马斯克造星舰到现在还没有成功，NASA之前搞航天飞机炸了两次后来也就不敢搞了。但是火箭虽然复杂，但毕竟是可以测试的。你发射一次有问题，找到问题在哪里，改进，然后再发射。这样经过多次你的火箭就越来越可靠，故障率就越来越低。

但公有云你没法这么做，因为公有云的特点决定了它的生产环境对该厂商而言是全世界最大的，你不可能去构建同等规模的系统来做充分的测试。我不清楚现在这些公有云厂商会构建一个多大规模的测试环境，总之肯定会远远小于实际的生产环境。因为生产环境一年的成本几百亿，搞一个跟它同样规模的测试环境，云厂商早就破产了。

所以如果类比火箭来看，公有云就相当于你在测试的时候用的是在自家后院发射的那种小火箭，然后接下来就把这个小火箭放大个100倍，然后就拿着它去做载人登月。这个比方听起来有点吓人，但道理我觉得就是这么个道理。

我这个逻辑也可以解释为什么公有云出问题的经常是那种全局性的管控系统，就是因为这些系统最难做同等规模的测试，因为它是全局性、全球性的系统。

我们在看一个工程失效的时候当然有很多视角，比如有的人会比较倾向于把它导向到最近精简压缩人员比较厉害，搞降本增效结果变成了降本增笑上。这当然也是原因之一，因为复杂工程系统的维护还是要有专业的团队，也需要这个团队尽心尽力，因为他要不断地去巡检，解决技术债，防微杜渐。

但更根本的原因，我认为还是公有云没有办法做很好的测试。
