自从 2000 年初全球首家公有云服务商成立以来,云计算的普及从根本上改变了互联网的格局,而且变革烈度之大远超以往。
作为第一家在 2000 年初就将内部计算基础设施通过 API 向外部客户出租的云服务商,Amazon 创造了“基础设施即服务”(IaaS)一词。Google 与微软也不甘于人后、很快决定跟进,于是就有了 Google Cloud Platform (GCP) 和微软 Azure 两款 IaaS 产品。在 IaaS 厂商时代之前,人们几乎从未听说过基于 Web 或者 SaaS(软件即服务)的商业模式。倒不是人们想不到,只是其中困难重重、成本也太过高昂——服务商必须购买专用服务器及高带宽连接,才能及时处理网站上传入的大量访问请求;还需要聘请工程师构建起一套可扩展系统;如果打算向国外客户提供服务,企业还需要在相应的地理位置部署服务器。
IaaS 厂商则给企业客户提供更短的产品上市周期、显著降低开发成本,帮助客户在几天之内就能用少量资金开发出在线、可扩展且面向全球的服务。这一切,在二十多年前几乎根本无法想象。
为何决定将众多流程转移至本地部署私有云?
首先要向大家介绍一下,Enzymit 的主要工作就是利用云服务对蛋白质设计进行资源密集型计算,我们并没有多少需要跨越多个地理区域进行扩展,或者每分钟需要处理数百万个请求的开放式应用程序。我们的主要用例就是运行繁重的 CPU 与 GPU 分析,而且在实践中逐渐发现 IaaS/ 公有云解决方案其实并不能带来长远的成本效益。
从我们的角度来看,公有云服务的第一个显著短板就是成本透明度。尽管目前最具体量的几大 IaaS 厂商都投入了大量资源,希望为客户打造出准确的计费模拟器与支出预测工具,但我们发现只有在客户将公有云 API 作为工程师与“原始”计算基础设施之间的中间层时,这些方案才有良好效果。换句话说,只有客户把自己锁定在单一 IaaS 厂商身上,成本透明度才能得到保障;如果选择跨云,成本优化能力就会大打折扣。而如果我们不希望把软件锁定在某家云服务商处,而单纯使用其准系统基础设施来保证后续在不同云厂商间的迁移能力,那可就麻烦了。这时我们需要面对的是极为复杂的计费模型,感兴趣的朋友可以参考本指南,而且这还只是单一服务商的数据传输计费模型!
正因为如此,企业客户一般都需要聘请认证专家,由他们专门负责在添加存储、CPU 及其他资源时设计出易于理解和验证的成本结构。云服务商也不失时机地推出了认证资质考试,这同样是个可观的收入来源。
在建立 Enzymit 之后,我们也从某公有云巨头那边拿到了可观的服务积分。跟大部分人手紧张的初创公司一样,我们兴高采烈地涌入云端、并没有注意到自己在架构设计上的失误。由于资源利用率低下,我们白白浪费掉了价值数千美元的积分,但最终还是在云上运行起一套利用 GPU 执行神经网络训练 / 推理、通过 CPU 执行计算的业务平台。
不过在一年花掉 10 万美元服务费后,我们计算出每线程每小时的成本约在 0.06 美元到 0.08 美元之间——包含存储、数据传输以及 CPU 使用等资源要素(不含 GPU 资源)。
因为我们每月大约需要运行 12 万个 CPU 时,所以单月云成本就高达 7200 到 9600 美元!有这笔钱,我们完全可以买到配备有 RTX 3090 顶级 GPU 的强大服务器了。
这一发现,让我们开始考虑至少应该把部分工作负载转移到本地计算服务器上。经过初步规划,我们决定购置三台工作站,总成本为 17000 美元。其一是基于 GPU 的工作站,配备两块 RTX 3090 显卡外加一块英特尔 i9-12900 CPU。另外两台工作站则分别配备 16 核 AMD Ryzen 5950X CPU。
我们又投入了一定人力,在几天之内完成了 slurm、NFS、备份等常用服务的设置和部署。
我们注意到,虽然 RTX 产品被广泛理解成高端游戏显卡,但其性能并不弱于 Tesla V100(有时候甚至更好)。部分云服务商甚至为 RTX 3090 开出了每小时 3.06 美元的租赁天价。
我们也知道,维护自己的计算基础设施并不便宜,而且需要考虑维护、安全等一系列隐藏成本。
在接下来的几个月中,我们将持续收集各项数据,希望最终找到一套更具成本效益的完善解决方案,真正在本地基础设施与公有云服务之间寻求平衡点。但无论如何,经历了几个礼拜的本地基础设施使用之后,我们意识由于资源规模完全无法与公有云相比、所以必须对本地负载做出详尽规划。但另一方面,只要规划得当、实验顺利,我们实际消耗的资源远比当初在云上时要低。
云使用不当便是“杀器”
2021 年 CNCF《FinOps Kubernetes Report》调研报告显示,迁移至 Kubernetes 平台后,68% 的受访者表示所在企业计算资源成本有所增加,36% 的受访者表示成本飙升超过 20%,这都说明即使是资源利用率更高的云原生架构也需要合理的资源成本管理。
星汉未来联合创始人 &CPO 胡忠想此前的文章中在优化云成本方面提出了四点建议,不同企业可以根据自己现阶段情况有条件地加以选择:
- 做到成本可观测。通过建立资源利用率指标和每日对账机制,让企业各部门对成本的认识及管理能力保持一致。
- 公有云物尽其用。企业由于对云产品了解不够、对云成本认识不足,引入公有云从而导致业务复杂度提升、相应成本提高。企业可以通过定时扩缩容和机型降配两种手段,充分利用公有云的弹性和退改灵活性,直接有效降低公有云的使用成本。
- 充分利用弹性与共享。企业可以利用 Kubernetes 切割现有资源并以固定 IP 形式交付资源,并对流量模型进行抽象,结合具体业务建立自动扩缩容和错峰调度等。
- 异地部署、混合编排和在离线整合。这些方式需要从企业整体层面考虑,通常不是一个部门能解决的。企业内部可以公司名义成立专项来实施,先从小业务入手,待验证平台功能完善后,再考虑逐步把核心业务迁移到平台,最终达到优化企业整体资源利用率的目的。
降低云成本会对企业利润产生重大影响。Zoom 公司在 2021 年一季度的财报中称,其毛利率从前一季度的 69.4% 上升至 73.9%,这主要是由于在公共云资源的优化上下了很大功夫。Spotify 自研追踪云计算开支的工具,同时鼓励工程师们掌握云计算支出的所有权,使其每年节省了几百万美元的云计算开支。
参考链接: