对象存储是云计算的定义性服务,曾是云上降本的典范。然而随着硬件的发展,资源云的出现,曾经“物美价廉”的对象存储服务失去了性价比,和EBS一样成为了杀猪盘。
我们在《云计算泥石流》系列中已经深入剖析过云上 EC2 算力,EBS 磁盘,RDS 数据库的成本构成,并揭示了公有云真正的商业模式 —— 廉价 EC2/S3 获客,EBS/RDS 杀猪。但在当下,“廉价”S3已经名不副实了。
对象存储,又称简单存储服务(Simple Storage Service,缩写为 S3,以下用S3代指), 曾经是云上“物美价廉”的拳头产品。
在十几年前,硬件的价格高昂;能够用一堆几百GB的机械硬盘,三副本搭建可靠的存储服务,并设计实现一套优雅的 HTTP API,还是一件颇有门槛的事情;因此相对于那些“企业级IT”存储方案,物美价廉的 S3 显得很有吸引力。
但是计算机硬件这样的领域非常特殊 ——有着一个价格每两年减半的摩尔定律。在 AWS S3 的历史上的确有过几次降价,下面的表格里整理了几次主要降价后的 S3 标准档存储单价,也整理了对应年份企业级 HDD/SSD 的参考单位价格。
显而易见,S3 标准档的单价从 2006 年的0.15 $/GB·月到 2023 年的0.023 $/GB·月,降到原来的15%,便宜了6倍,听上去不错;然而当你考虑到 S3 底层 HDD 的价格从降到原来的3.7%,便宜了整整26倍时,就能发现这里面的猫腻了。
在2023年当下,当我们重新进行成本核算时,不难看出 S3 / EBS 这类存储服务的性价比早已今非昔比—— 云上的算力 EC2 相比自建服务器有着 5 ~ 10 倍的溢价,而云上的块存储 EBS 相对本地SSD有着几十倍到一两百倍的溢价。云上的 S3 相对普通机械硬盘也有着几十倍左右的资源溢价。作为云服务之锚的 S3 / EBS / EC2 价格,又会传导到几乎所有的云服务上去 ——这让云服务的整体性价比彻底丧失吸引力。
这里的核心问题是:硬件资源的价格随着摩尔定律以指数规律下降,但节省的成本并没有穿透云厂商这个中间层,传导到终端用户的服务价格上。逆水行舟,不进则退,降价速度跟不上摩尔定律实际上的意思就是变相涨价。以S3为例,在过去十几年里,云厂商S3虽然名义上降价6倍,但硬件资源却便宜了 26 倍,所以 S3的价格其实就是涨了4倍。
尽管云服务有着高昂的溢价,但如果它是无法替代的最优选,那么即使溢价超高的性价比低,也不影响价格钝感的高价值头部客户使用。然而不单单是成本,存储硬件的性能也遵循摩尔定律,跟着时间累积,自建S3的性能也慢慢的出现显著优势。
S3 的性能大多数表现在吞吐量上,AWS S3 的 100 Gb/s 网络提供了高达 12.5 GB/s 的访问带宽,这一点确实值得称道。这样的吞吐量放在十年前毫无疑问是让人震撼的,然而在今天,一块两万块不到的企业级 12 TB NVMe SSD ,单卡就能够达到 14 GB/s 的读写带宽,100Gb的交换机和网卡也已经很普及,想做到这一点并不复杂。
在另一个关键性能指标“延迟”上,S3 更是被本地磁盘吊打。S3 标准档的首字节延迟相当拉垮[7],根据文档说明在100~200ms百毫秒的范围。当然 AWS 也刚刚在 2023 Re:Invent 上新发布了“高性能S3” ——S3 Express One Zone,能达到单毫秒级的延迟,弥补了这个短板。但是和 4K 随机读/写延迟55µs/9µs十微秒量级的 NVMe SSD 相比还是相距甚远。
S3 Express 的毫秒级延迟听上去很不错,但在 NVMe SSD + MinIO 自建面前就只能自惭形秽了 —— 当代的 NVMe SSD 的4K随机读/写延迟已达到了 55µs/9µs ,套上一层薄薄的 MinIO 转发,首字节输出延迟要比 S3 Express 好了接近一个数量级。如果用标准档 S3 对比,延迟差距能更加进一步放大到三个数量级。
性能的差距仅仅是一方面,更重要的因素仍然是成本。标准档的 S3 价格自 2016 年至今都没变过,一直是 0.023 $/GB月,每TB·月的人民币价格是161元。高级货色 S3 Express One Zone 的价格比标准档高了一个数量级,达到每月·GB $0.16,每TB·月的人民币价格为1120元。作为参考,我们大家可以引用《重新拿回计算机硬件的红利》和 《云盘是不是杀猪盘》中的数据来进行对比:
这里本地 NVMe SSD 使用的例子是 Shannon DirectIO G5i 3.2TB MLC 颗粒企业级 SSD,是我们自己大规模使用的SSD卡。全新拆机零售件价 ¥2788,按 5 年 60 个月折算的每 TB·月的人民币价格为 14.5 元。咱们退一步将按浪潮列表价 ¥4388 核算,TB·月价也就是 22.8 元。如果这个例子还不够,我们大家可以参考《是时候放弃云计算了吗?》里面 DHH 下云采购的 12 TB Gen4 NVMe 企业级 SSD,2390$ 一块,TB·月价也正好是23 元。
那么问题就来了,性能好几个数量级的 NVMe SSD,为什么单价比 S3 标准档还要便宜一个数量级(161 vs 23),比 S3 Express 便宜了两个数量级(1120 vs 23 x3 )?如果我用这样的硬件(就算上三副本)+ 开源软件自建一个对象存储服务,是否能实现三个数量级的性价比提升?
特别值得一提的是,上面对比的还单纯是存储空间的费用,流入流出对象存储的流量费通常也是一笔非常可观的支出,有的档位收费靠的不是存储费用,而是取回流量费。还有 SSD 相对 HDD 可靠性的问题,云上数据自主可控的问题,这里就不再深入展开了。
当然云厂商也会辩解——说我们这个 S3 啊,可不是纯粹的存储硬件资源,而是一个开箱即用的服务,里面还包含了软件的知识产权,人力的维护成本;而自建故障率高,自建更危险,自建运维人力开销大等等等等,可惜,这套说辞放在 2006 年或者 2013 年还可以说得通,放在今天就显得有些滑稽了。
在十几年前,绝大多数用户都缺乏 IT 自建能力,S3 也只有少数成熟的开源替代品。用户都能够容忍接受这样的高科技溢价。然而当各家云厂商、IDC 都开始提供对象存储,甚至都出现了开源免费的对象存储方案(MinIO)后,卖方市场变成了买方市场,价值定价逻辑转变为成本定价逻辑后,不降反涨的资源溢价自然就会面临用户的拷问 ——它到底给我带来了什么额外价值,以值得付出这种巨额费用?
云的倡导者声称,云托管服务相比开源自建更便宜,更简单,更快捷。对于个人站长,中小互联网公司这些云适用光谱内的用户来说,这么说没问题。如果你的数据只有几十 GB,或者有一些中小规模的出海业务和CDN需求,我并不推荐你自建什么对象存储,而是出门左转去 Cloudflare 弄个 R2 —— 这也许就是最优解。
然而对于真正贡献营收大头的高价值中大规模客户来说,这些价值主张就不一定成立了。如果你主要是在本地存储使用 TB/PB 规模的数据,那么确实应当认真考虑一下自建对象存储服务的成本与收益 —— 现在用开源软件自建已经很简单、稳定与成熟了。存储服务的可靠性主要根据磁盘冗余:除了零星的硬盘故障(HDD AFR 1%,SSD 2~3‰)需要你(请代维服务商)换上备件,并不会有多少额外的负担。
如果说混合了 EBS/S3 能力的开源 Ceph 还能算有不少运维复杂度,功能也没有完全拉齐;那么完全兼容 S3 的对象存储服务开源替代 MinIO 能够说是开箱即用了 —— 一个没有额外依赖的纯二进制,不需要几个配置参数就能够迅速拉起,把服务器上的磁盘阵列转变为一个标准的本地 S3 兼容服务,甚至还集成了 AWS 的 AK/SK/IAM 兼容实现。
从运维管理的角度看,Redis 的运维复杂度比 PostgreSQL 低一个数量级,而 MinIO 的运维复杂度又比 Redis 还要再低一个数量级。它简单到这样一种程度:我一个人可以花个一周不到时间把 MinIO 的部署/监控作为添头放到我们开源的 PostgreSQL RDS 方案里来,用作可选的中央备份存储仓库。
我在探探时,有几个 MinIO 集群就是这么搭建维护的:放了 25PB 数据,可能是国内先前规模最大的 MinIO 部署。用了多少人来维护呢?抽调了一个运维工程师 1/10 不到的上班时间来兼职罢了,而自建整体综合成本在云列表价 0.5 折浮动。实践出真知,如果有人骗你说对象存储自建很难很贵,你确实能自己动手试试 —— 要不了几个钟头,这些销售 FUD 话术就会不攻自破。
对于对象存储服务来说,云的三点核心价值主张:“更便宜,更简单,更快捷” ,更简单这条说不上,更便宜走向了反面,恐怕只剩下最后一点更快捷了 —— 在这一点上确实没有谁能比过云,你确实可以在云上用1分钟不到在整个世界所有区域申请PB级的存储服务,Which is Amazing!只不过你也要为这个鸡肋特权付出几十倍的高昂溢价。
记得在 2019 年 4 月 1 日,国内增值税正式从 16% 下调到 13% ,苹果官网随即全面降价,单品最高降价幅度达 8% —— iPhone 的几个典型产品都降了 500 元,把税点返还给了用户。但也有许多厂商选择装聋作哑维持原价,自己吃下这个福利 —— 白花花的银子怎么能随便给别人呢?
类似的事情就发生在云计算领域 ——硬件成本的指数下降,并没有在云厂商的服务价格上充分反映出来,而这一点,让公有云逐渐从普惠基础设施变成了垄断集中杀猪盘。
然而,事情正在起变化,硬件重新变得有趣起来,而云厂商没有很好的方法把这部分红利永远掩藏遮盖下去 ——聪明的人开始计算数字,勇敢的人已经采取行动。像马斯克和 DHH 这样的先锋已经充分认识到了这一点,从云上下来,脚踏实地 ——直接产生千万美元的财务效益,并且还有性能上的回报,运营也变得更自主独立。慢慢的变多的人会意识到这一点,追随先驱者做出明智的选择,拿回属于自身个人的硬件红利。
自建服务这东西,搭建起来很快,抽个人加个班,网上看个教程,几小时就完成了。难点在于后续维护以及出了问题怎么办。我呆过一家小公司,没有专门的DBA,有一次迁移mysql一主两从,就是3个开发一边百度一边搞,一个通宵弄完的,中途报了几次错,也不知道如何解决,反正重新执行迁移程序又能跑下去,事后检查800g的数据丢了大概20多g吧,但是应用程序启动起来又没报错,谁知道呢,也许是什么日志丢了,也许是用户数据丢了。报告老板的情况是完美迁移,老板也很满意,反正也不给加班费,不花钱不也做得挺好吗。 当然我不是说云服务就是好,之前阿里和滴滴的事故也说明了,可能他们也只是比我们高级一点的草头班子【笑】