11 云成本真相:深入解析,打破“上云贵”认知
你好,我是潘野。
上一章我们学习了基础架构的自动化,这对于提高运维效率具有重要意义。但从资源生命周期的角度来看,自动化只是第一步。对于基础架构来说,在满足业务需求的前提下,实现资源的高效利用,尽可能减少资源的浪费,这是更重要的目标。今天我们进入新的一个章节,来谈一谈如何高效使用基础架构的资源。
这几年,降本增效这个词频繁出现在我们的视野中,各个公司都在努力降低IT成本,提升IT资源的使用效率,从而提高企业的竞争力。在降本增效的过程中,我们探索了很多的做法,比如尽可能使用开源软件,降低商业软件授权费用,还有通过优化软件架构提升资源使用率等等。
去年有 一篇文章 在网上广为流传,某家公司从公有云上退到自建机房之后,在IT基础设施上节约了60%的费用,不过到底如何计算费用可能你并没有深入思考过。今天这一讲,我们就来聊聊如何科学评估上云和自建机房方案的成本。
学完今天的内容,相信你就能从容回答“上云究竟贵不贵”这个问题了。
公有云的成本构成
首先,我们先看公有云部分。公有云成本主要包括以下几个方面:
- 计算资源: 虚拟机(VM) 是公有云中最常见的计算资源,其成本取决于 VM 的类型、CPU、内存、存储和网络配置。
- 存储资源: 公有云提供各种存储类型,比如对象存储、块存储和文件存储,每种类型的成本都不同。
- 网络资源: 公有云网络流量会产生一定的费用,具体取决于数据传输量和出口带宽。
- 其他服务: 公有云还提供各种其他服务,如数据库、负载均衡、安全和管理工具,这些服务也会产生一定的费用。
这些服务的费用,公有云厂商一般都会提供非常详细的计费列表,以及成本计算器。我们可以从云厂商的官方文档中找到相对应的技术细节文章,比如 AWS的成本计算器,如果有兴趣的话,你可以课后看一下。
这里我们用这个成本计算器来做一个估算。假设我们需要使用1000个CPU、3T内存、50T磁盘,在AWS上一个月需要多少钱?
首先,我们需要在AWS上创建一个我的估算,然后点击“配置EC2”。
之后,我们在EC2规范的租赁选项里,选择共享实例,并且在EC2实例中筛选出近似在16个vCPU、48G内存的机型。这里我们选择m5a.4xlarge,按照1000个CPU、3T内存这个需求来算,这个机型实例大约需要65个。
下图是AWS成本计算器返回的计算结果,可以看到AWS给出了非常详细的费用计算方式与结果:1000个CPU、3T内存,一个月大约要花费20830美元。
接下来,我们需要配置 块存储 的大小、类型和性能。这里我们选择SSD-gp3类型,IOPS为3000,存储量50T。
可以看到,块存储的每月费用约在313000美元。
如果我们是使用对象存储来存储数据,那么50T的数据花费则是1334美元,可见两种存储方式在成本上的巨大差异。
刚才计算和存储我们都计算了,但是实际运营中,我们还会产生一些数据传输的费用。在AWS里,从外部向内部传输的数据不收取费用,只收取不同区域间和向外发送数据的费用。
这里我们假设不同区域之间和向外发送的数据都是100TB,那么一个月大约费用在10956美元。
所以1000个CPU、3T内存、50T磁盘一个月的成本约在33000美元到350000美元之间,这主要取决于你的数据存储主要以块存储为主体,还是以对象存储为主体。
自建机房或者叫私有云的成本构成
我们再来看看自建机房的成本如何计算。
自建机房的成本受多种因素影响,无法提供一个精确的计算结果,所以我们需要找到影响私有云成本的关键因素。主要可以从硬件成本、软件成本、运维成本还有其他成本四个方面来考虑。
从我的过往经验来看,1000个CPU、3T内存、50T磁盘转化成普通的2U服务器,包含机房的场地、电力等费用在内,初期的投入大约在500万人民币左右。如果这个50T的磁盘是用的企业级硬件存储,那么这个初期投入要达到1000万人民币左右。
我们假设业务在12个月里是平稳状态,那么对于公有云来说,一年的花费就在350000美元到3500000美元之间。
而自建机房在前期投入500万之后额外付出的费用是比较低,但是到了第三年开始,机器进入淘汰期,还需要额外一笔不小费用来更换机器。
我用一个图来表示两者在五年左右的成本差别,在同等业务体量的情况下,公有云每年的费用基本不会有大幅度的变化,但是自建机房方案前五年的费用呈勺子状,由低到高。
两者对比我们可以看出,公有云与自建机房在花费上并无显著差距。
不过在公有云上花费是明码标价的,所有的费用都显示在账单中。而私有云或者自建机房中有很多隐形成本,这往往会被人忽略。
原因分析
既然并没有显著的差距,那么为什么有些公司从公有云上退下来之后,IT成本节约了60%?其实这说明在公有云上资源的利用率不高,产生了很多的浪费。根据我的经验,产生这种浪费主要由两类情况引起的。
第一种是 业务流量波动。
许多公司业务具有明显的周期性特点,例如电商平台在双十一期间的流量会大幅增长,而在其他时间段则相对较低。为了保证业务高峰期的服务质量,往往会按照峰值流量来配置资源,导致大部分时间段资源利用率较低。通俗来说就是虽然申请了高规格机型,但是实际使用率却非常低。
第二种是 资源预留。
为了保证业务的可用性和可靠性,运维往往会预留一定的资源,以应对突发流量或故障。然而,预留的资源可能不会被充分利用,导致资源浪费。具体表现就是申请了资源,但是并未使用,让资源一直闲置,产生了浪费。
解决方案
那么,我们有什么办法来应对呢?
对于第一种情况,申请了高规格机型,但是实际使用率却非常低。我们需要对资源进行动态调整配置。在Kubernetes中有HPA(水平扩展)与VPA(垂直扩展)两者方式来提高资源的使用率,可以根据业务需求动态调整资源配置,避免资源浪费。
第二种情况,闲置资源造成的浪费。公有云里提供了弹性伸缩的能力,可以根据业务需求自动扩缩容,提高资源利用率。
除此之外。我们还需要优化应用架构。我给你分享一些常见的思路。
首先,尽可能用无状态服务。 无状态服务是指其状态不依赖于任何外部存储的服务。这种服务可以更容易地进行横向扩展和迁移,这样可以利用好云的扩容机制来提高资源利用率。
其次,利用好公有云的特性。 公有云提供商通常提供各种特性,可以帮助我们降低成本。例如公有云会提供以下几种类型的虚拟机。
- 按需付费:仅为使用的资源付费。
- 预留实例:预留资源以获得更优惠的价格。
- 抢占式实例:以更低的价格获取闲置资源。
那么,我们利用好这几种类型的虚拟机,可以节省相当可观的费用。
另外,还可以优化存储方案。 对于不频繁更新的文件,可以将其存储在对象存储中,例如 Amazon S3 。在存储方式上,对象存储通常比传统的块存储要便宜非常多。
总结
今天,我们分析了公有云与自建机房之间的费用差别,还讨论了在公有云上产生浪费的原因。
经过分析,我们发现,公有云的方案到底贵不贵,主要取决于具体业务需求和使用情况。课程里我给出了几个方面的考虑因素,你可以参考这个表复习一下。
如果企业能够有效地管理云资源,利用按需付费或预付费等费用优化选项,定期审计云资源,避免未资源浪费(比如资源利用低或者过度配置服务导致的浪费),那么上云是可以控制成本,甚至节省成本的。然而,如果管理不善,可能会导致成本增加。
因此,企业需要根据自身实际情况来决定是否上云以及如何上云。
下一讲,我们将重点来讲解如何利用好Kubernetes的水平扩展与垂直扩展功能来提高资源的使用率,敬请期待。
思考题
假如你的公司计划将部分业务迁移到公有云,你觉得要如何评估该方案的成本和效益呢?
欢迎在评论区与我讨论。如果这一讲对你有启发,也欢迎分享给身边更多朋友。