【51CTO.com快译】与各种常见的事物类似,云服务的可扩展能力也是一把“双刃剑”。技术人员在享受由它带来的便利性和敏捷性的同时,其日渐增加的配置复杂度、以及由过度扩展所带来的成本增加,往往会在季度或年末,让企业的财务面部抽搐。
以Pinterest(堪称图片版的Twitter)为例,在某个公共假期里,由于使用量的激增,其云服务账单超出了最初的估计,导致Pinterest不得不在原有价值1.7亿美元的预留资源之外,多向AWS支付了2000万美元。可见,合理处置云服务的成本影响的唯一方法,便是实施自动化的云成本优化。下面,我将和您逐步开始深入讨论。
一、了解优化云成本的好处
如果你还在犹豫是否应该花时间去优化云服务的成本,那么先请看看通信、娱乐、SaaS、以及电商领域的公司有关优化收益的报告:
- 2021年第一季度,Zoom的报告称,其毛利率从上一季度的69.4%扩大至73.9%,主要源于在公共云资源方面投入了大量精力。(https://www.cnbc.com/2021/06/01/zoom-zm-earnings-q1-2022.html)
- Spotify构建了一个名为Cost Insights的自定义工具,可跟踪云服务费用,并鼓励工程师掌握云端支出的所有权,进而将整体的年云支出减少了数百万美元。(https://redmonk.com/jgovernor/2021/04/28/shifting-cost-optimisation-left-spotify-backstage-cost-insights/)
- 通过对基础设施的决策进行适当地增量优化,Segment在保证其流量增加25%的同时,提高了20%的毛利率,并且降低了30%的设施成本。而且,这一切都是在三个月内完成的(https://t.co/kuPRZZg4uK?amp=1)。
- 面对其云端费用的急剧上升,电商初创公司La Fourche通过运行CAST AI的Savings Report,来寻找优化的机会。通过启用自动化优化,该公司在不增加工程工作量的情况下,将每个月云端费用减少了69.9%。
下面,让我们来看看团队可以选择哪些方法,来防止云端成本的失控。
二、从了解您的云账单开始
下图展示的是一个典型的云服务账单。
这张账单不但冗长复杂,而且很难被拆开,毕竟每一项服务都有一个明确的计费指标。对此,我们几乎无法根据实际的使用情况,及时地做出业务和成本上的抉择。而且,这还只是分析了一种云业务、以及一个团队的成本,尚未涉及到多个团队或多种云业务的计费。
对此,我们需要通过成本分配,来揭示谁正在使用哪些资源,以及谁应当对哪些费用负责。通过根据云账单的检查来分配成本,我们可以更好地预测业务需求,并为此保留适量的资源。不过,以Kubernetes为例,在其上运行的动态基础设施中,实施成本分配是极富挑战性的。
为了能够估计未来的云端资源需求,您可以遵循如下步骤:
- 通过各种可视性,来分析实际使用报告,进而确定任何支出的模式。
- 借助定期分析和处理过的历史数据,来检测资源使用高峰场景。
- 根据周期性的客户需求模式,判断其是否与资源使用的峰值相关。
- 确保定期监控资源的使用报告,并通过设置警报来控制云端成本。
- 通过测算特定于应用程序或工作负载的成本,来创建应用级别的成本计划。这将为您开启计算云基础架构的总拥有成本的大门。
- 接着,查看云提供商的定价模型,并规划一段时间内的容量需求。通过将所有这些数据集中到一处,以便更加清楚地了解成本支出。
注意,上述步骤并非一次性的任务,您可以按需定期执行,以获得精准的结果。
三、为应用程序选择合适的计算资源
通常,在AWS之类的平台上,您的业务可能拥有多个实例(那些拥有400个不同实例的应用十分常见)。同时,相似的实例类型在不同的云服务提供商之间,会具有截然不同的服务性能。即便在同一个云服务中,那些成本更高的实例也并不意味着其性能更好。因此,如果您的应用主要依赖于计算的话,那么选择合适的虚拟机,将有益于计算资源的合理配置。
如何为您的工作负载选择合适的虚拟机:
1. 定义您的最低要求
确保在CPU(架构、数量、处理器选择)、内存、SSD和网络连接等所有计算维度上,定义最低要求。
2. 选择正确的实例类型
您可以从上述定义的需求,从不同的CPU、内存、存储和网络容量所组合成的实例类型中进行选择。毕竟这些不同配置的实例类型在不同程度上满足了某类功能优化的偏好。
3. 设置实例的大小
注意,实例应配有足够的容量,以满足实际业务的负载要求,并能够在必要时包含应对突发的情况。
4. 检查不同的定价模型
目前,三大主流云服务提供商都提供了不同的费率标准,即:按需(即用即付)、预留容量、竞价(spot)实例、以及专用主机。这些选项各有优、缺点。
四、使用竞价实例实现更大程度的节省
从AWS和其他大型云服务提供商处购买闲置的容量资源,通常被认为是一种明智之举。毕竟竞价实例的费用要比按需实例便宜90%。当然,其前提条件是:云服务供应商保留着随时收回这些竞价实例资源的权利。因此,在做出选择之前,请您对自己的应用进行如下方面的考量:
1. 检查业务负载,判定是否适合竞价实例
检测的具体内容包括:能否承受突然中断?完成某项作业的时长?是否属于关键型业务负载?
2. 检查云提供商的服务
请检查待选实例的中断频率。有时候,某些不太热门的供应商所提供的实例,往往意味着中断的频次更低,其相应的在线服务时间更长。
3. 出价
为您选定的竞价实例设定愿意支付的最高金额,它会在市场价格满足(或低于)该报价时完成匹配。我的经验是,您可以参考过往在按需定价时设置过的最高价格。
4. 分组管理竞价实例
您可以一次性请求多种实例类型,以增加获取竞价实例的机会。
总之,为了顺利开展上述工作,请分配好在配置、设置、以及维护等任务上的大致时间(除非您决定将其自动化)。
五、不要被省钱方案的各种承诺所诱惑
当您意识到自己无论如何,都会使用某项云服务时,往往会产生“那何不提前购买容量”的想法?同时,云服务提供商也会以更便宜的价格,允许您提前买断未来一到三年的容量。这看似一个不错的选择。
不过,面对变化莫测的业务环境,我们往往无法准确预知团队在一到三年内的具体发展方向,那么又何谈提前规划容量呢?因此针对预留实例和省钱方案,您应该注意如下几点:
- 由于预留实例的工作方式属于“非用即失(use it or lose it)”,那么如果资源被闲置一个小时,则会给您的团队带来一个小时的损失。
- 当您承诺持续使用某些特定资源或消耗水平时,您是假设自己的需求在整个合同期限内,不会发生变化。但是我们常说互联网世界瞬息万变,一年的承诺对于云服务来说“太长了”。而当您的业务要求超出预定保留的额度时,就必须像前文提到的Pinterest那样进行溢价支付了。
- 同时,当您发现自己的业务一直与预留的容量相差甚远的使用状态时,您实际上就是在为不充分的资源利用而买单。
- 与某个云服务提供商签订此类合同,您将面临着被提供商锁定的风险,即:在将来一到三年内,您的业务会重度依赖该提供商,甚至需要跟随他们的各种变化。
可见,我们需要经过深思熟虑才能去选择预留资源的模式。
六、为成本优化选择合适的工具
在云服务费用的控制方面,企业还可以采用的各种成本管理策略与优化方案包括:
- 成本可视化和分配——通过使用各种成本分配、监控和报告工具,您可以找出费用产生的来源。例如,实时的成本监控会在您的使用量超过设定阈值时,立即触发提示与报警。曾经有一次,Adobe团队在Azure上运行了某些计算操作,并由此意外地产生了超过原定50万美元的云资源占用费。其实,一个简单的警报就可以防止此类情况的发生。
- 成本预算和预测——如果您有充足的历史数据处理经验,并且对未来的此类需求具有清晰的认识,那么您就可以估计自己的团队,将需要多少资源,以及投入多少预算。
- 传统的成本优化解决方案——您可以将前面提到的两点综合起来,以创建云服务支出的全景图,以发现潜在的改进之处。目前,市场上的许多该领域的解决方案可供帮忙,例如:Cloudability或VMware的CloudHeath。当然,在大多数情况下,它们给您提供的只是一些静态的建议,并且需要工程师手动去实施。
- 自动化的云原生成本优化——作为一类强大的、可降低云成本的解决方案,此类优化不需要团队开展任何额外工作。因此,它们往往为团队节省了50%以上的日常工作量。同时,原生自动化方案可以对资源需求的增加、以及定价的变化,自动做出完全自主且快速的响应。
七、云端自动化的优势
通过上述讨论,我们可以看到光靠运维人员去分配、理解、分析和预测云端费用,往往是比较麻烦、且不够准确的。我们需要借助云原生自动化,来轻松地实现基础架构和资源配置上的调整,启用更多实例,以及执行各种具有成本效益的任务。
此外,自动化解决方案还能够为我们带来如下方面的价值:
- 通过选择最具成本效益的实例类型和容量,来满足应用的实际需求。
- 自动扩、缩云端资源,以应对业务需求的高峰和低谷。
- 及时移除未使用的资源,以避免浪费。
- 利用竞价实例,来恰当地管理中断。
- 通过自动化存储和备份、安全性和合规性的管理、以及配置和设置上的更改,以协助用户在各个领域中全面节省成本。
- 能够让各种修改实时生效,并可以掌握云成本优化的关键时间点。
- 通过在数量上的处理优势,检查并发现用户尚未意识到的方面。
最后,作为案例,我们将AWS的按需实例和竞价实例予以了结合,在8个CPU和16 GB内存上运行着自己的应用程序。然后,我们通过CAST AI来运行该应用,以检查当前的配置是否需要优化。该自动化平台随后建议我们转移到竞价实例--INF1上。事实证明,该实例实际上比我们之前使用的通用计算实例要便宜得多。可见,自动化的费用监控和报告,的确能够为我们优化目标云服务的相关成本。
原文标题:The Ultimate Guide to Cloud Cost Optimization,作者:Leon Kuperman
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】