摘要:2022 年 8 月 16 日,高效能,才经济 | 云上自动化运维 CloudOps 系列沙龙_第三弹正式开启,阿里云弹性计算技术专家樊毅伟,为我们带来了题为“云上成本优化实践”的主题分享,以下是他的演讲内容整理,本篇内容主要分为五个部分:
1. 云上成本控制的必要性
2. 付费方式与资源规格选型
3. 提升资源利用率
4. 成本管理
5. 用户问答


如上图所示,Flexera 2022 年云状态报告数据显示,受访企业认为他们云开支里有 32%是浪费的,高于去年的 30%。
根据中国信息通信研究院的云 MSP 服务发展调查报告显示,成本优化成为企业云管理的首要需求。云上成本控制是很多企业面临的难题、痛点。

云上和云下的成本管理体系有很大的差别。在云下,企业对 IT 资产是一次性采购,一次性支付金额。在云上,企业的 IT 资产变成按需索取,按量付费。
目前,企业在云上的成本控制面临很大的挑战。首先,云上成本管理需要多部门协作。比如财务/采购、技术/运维、产品/业务等团队进行协作。各部门在协作过程中,形成实时的决策体系。因为云资源的计费方式多种多样,所以企业需要深度理解云资源计费。
其次,企业需要及时的成本报告、监控体系。
最后,企业需要完成多云场景适配。面对多云场景,各个云有不同的计费方式,企业需要针对性地进行适配,控制自己的成本。

企业的云上成本控制的方法,主要分为四个模块。第一,选择合适的付费方式;第二,选择合适的资源规格;第三,提升资源利用率;第四,成本分析与监控。

以阿里云的 ECS 为例,ECS 主要有三种产品形态,分别是按量付费、包年包月、抢占式实例。
这三种产品形态对应了不同的产品功能,本质是经济性、灵活性和确定性三者的平衡。
按量付费的灵活性非常高,可以随时创建、释放、升配、降配,没有任何限制。但它的缺点是比较贵,经济性较差。
包年包月是预付机制,它的经济性较好,价格便宜。但它的灵活性较差,资源跟财务绑定。抢占式实例的经济性非常好,价格非常便宜,但确定性较差。

抢占式实例有两个特点。
第一,比按量付费的价格更便宜,最低可以达到一折。
第二,确定性较差。它在稳定运行一小时后,随时可能被系统释放。使用抢占式实例,适合无状态的任务型场景,可以大幅降低成本。

接下来,介绍一下预留实例券。包年包月的资源跟财务绑定在一起,退款、降配有很多限制。按量付费的 ECS 加预留实例券,主要解决包年包月的灵活性问题。
当 ECS 的实例规格和预留实例券匹配,按量付费的 ECS 就不会出账,只会收取 ECS 预留实例券的费用。
由于预留实例券是预付或锁定时长的理念,所以它比按量付费更便宜,极大降低成本。预留实例券有零预付、部分预付和全预付。
按量付费的 ECS 可以每小时出账,随时释放,也是零预付的方式,但预留实例券的零预付与此不同,是指用户购买了一定的时长,不能随时退款或退订。当用户承诺使用一年,每个小时付款,就必须使用一年。
部分预付是指用户先付一部分,系统会每小时扣除剩下的金额。全预付和包年包月一样,一次性付清所有的钱。

为了解决预留实例券不够灵活的问题,阿里云推出了节省计划。相比预留实例券,它能够满足 DevOps,容器化,多规格族,多地域部署等场景下,资源购买账单抵扣需求。
节省计划分为两种,即通用型和 ECS 型。通用型没有任何限制,可以直接抵扣 ECS 的按量付费账单。ECS 型有一小部分的限制,即地域规格族的限制。与此同时,节省计划支持多种产品,如 ECS、ECI、RDS 等等。

某电商用户一直在用包年包月,资源需求不稳定,算力需求变化快。在升降配和退款上产生隐形成本。通过节省计划搭配按量付费,资源随开随用,随时调整,总价稳定,切换后总成本降低 9%。
某在线教育用户,不同时段对资源需求有不同。该用户白天一部门使用一批资源,晚上另一部门使用另一批资源。包年包月资源有近一半时间在浪费。节省计划搭配按量付费,跨规格族折扣权益共享,切换后总成本降低 42%。
某游戏用户对弹性要求较高,资源池必须基于按量付费构建,导致按量付费的费用非常高。该用户直接购买节省计划,无需任何改造,总成本直接降低 56%。资源保障侧搭配容量预留,无费用增加,按量创建成功率 100%。

综上所述,建议用户将多种付费类型,组合使用。因为不同的付费方式,有不同的使用场景。
抢占式实例支撑无状态、任务型的业务负载。按量付费实例支撑有状态、动态变化型的业务负载。包年包月实例,按量实例+抵扣类产品支撑稳定的业务负载。

如上图所示,对计算资源各付费方式进行了比对。其中,计算资源的灵活性主要是指,资源是否可以随意创建、释放、变配,以及资源与财务的耦合程度。

如上图所示,对存储资源各付费方式进行比对。其中,按量付费卸载和释放均无限制,适用于不定时弹性的业务。

如上图所示,对网络资源各付费方式进行了比对。其中,按固定带宽计费适用于较稳定的业务,按使用流量计费适用于突刺性的业务场景,即偶尔流量特别大,大部分场景流量比较小。
共享流量包适用于对流量有一定预估能力的场景,否则流量包购买过大或未及时抵扣,都会造成浪费。

上图展示了资源规格选型的场景分类,用户可以根据自身场景,进行选择。只有选择适合自身业务场景的规格才能获得最优性价比。
如共享类的突发性能实例 t5/t6 成本低廉,非常适合轻量级 web 应用、开发/测试环境等低性能负载业务场景。价格可达相应独享规格的 30%到 60%。
如某电商网站根据自身业务特点选择计算型实例(4vCPU),相比通用型,成本降低 20%以上。

在资源规格选型方面,建议大家选择最新一代。因为最新一代意味着云厂商的软件或硬件进行了技术升级,可以享受云计算的技术红利,与之相呼应的是 2022 年 7 月 6 日阿里云发布官方公告:C6/C7,G6/G7,R6/R7 部分地域价格下调 9%到 19%。

提升资源利用率,主要针对抵扣类产品。因为抵扣类产品存在匹配不到,使用率、覆盖率不够的情况。所以预估容量很难达到 100%。用户需要关注关注抵扣类产品使用率、覆盖率。
如果发现容量达到 100%,可能有一部分账单无法被抵扣。用户需要加购或重新购买预留实例劵或节省计划产品。

除此之外,弹性伸缩可以有效提升资源利用率。弹性伸缩分为垂直弹性和水平弹性。垂直弹性是指,实例数量的增加或减少,比如 100 台 ECS 变成 200 台或 50 台。水平弹性是指,某台 ECS 的 CPU 内存增加或减少,升配或降配。
两种弹性伸缩模式都支持定时模式、动态模式、动态预测模式、健康模式、手工模式、以及多种模式叠加使用。

上图展示了,其他降本增效的方法。抢占式实例可借助诸如弹性供应、弹性伸缩产品来实现算力集群的稳定交付。
按量付费实例若长期使用,可转为包年包月,可选择按周付费。也可购买预留实例券、节省计划等抵扣类产品降低成本。开启节省停机模式,可借助自动化运维工具 OOS 产品实现周期性定时开关机。
包年包月实例可开启自动续费,借助统一到期日来提升续费效率。若不再使用,可退订或转按量付费。
带宽可借助自动化运维工具 OOS 实现周期性定时升降带宽峰值。购买共享带宽包、共享流量包,多产品间带宽可以互相复用,统一管理。
除此之外,用户可以授权智能顾问 Advisor 产品,定期扫描自身资源,给出成本优化建议。借助用户中心成本分析功能,进行费用分析与优化。

从财务人员的角度看,成本管理有四个需求。
第一,清楚地知道企业内部各个部门每月消费了多少金额。
第二, 设置预算来管理各个部门的开支。
第三,需要工具从各个维度分析 &感知自身成本,判断自身成本是否合理,是否有优化空间。
第四,成本异常检测能力。

在创建资源时,系统会根据分配策略,使用标签将资源自动分配到部门或团队。
从而清晰地看到每个团队、每个部门消耗了多少钱。

预算管理是指,用户根据一定的条件设置预算。如果超过预算,用户可以设置预警,发送邮件或短信。

成本分析与优化是从各个维度分析成本是否合理。用户可以根据标签,产品、地域、可供区域、实例规格等条件进行筛选和分析。

成本异常检测通过人工智能算法,识别费用波动异常。异常检测支持评估反馈,用户的反馈结果会参与训练算法,反馈越多、越准确,越有利于提升检测准确率。

包年包月、按量付费、抢占式实例、预留实例券等付费方式,是经济性、确定性、灵活性的平衡。企业需要关注每种产品适用的场景。只有选择适合自己的,才能达到成本的节约。
企业需要根据自己的业务场景,选择合适的实例规格。比如计算型,通用型,突发性能型的实例规格等等。
垂直、水平弹性伸缩、节省停机模式、自动化运维工具 OOS 产品等等,可以有效提升企业的资源利用率。成本分析与优化,主要从各个维度分析企业的成本是否合理。
Q1 为了防止成本浪费,有效管理云服务,企业需要遵循哪些优化云成本的实践?
答:比如定期审核、集中计费。除此之外,阿里云推出了一些成本分析,成本优化的功能,帮助企业实现降本增效。
Q2 如何把握容量的预估?
答:建议一边使用,一边优化。用户可以使用云厂商的监控指标或者基于自己的监控进行实时优化。
Q3 同一个标签的资源,如何进行成本分摊?
答:财务单元支持成本分摊。在阿里云的用户中心,财务单元会介绍成本分摊。
点击这里,查看云上自动化运维 CloudOps 系列沙龙精彩回放合集 &讲师资料下载。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来
我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion
参见下面的示例,我想最好使用第二种方法,但第一种也可以。哪种方法最好,使用另一种的后果是什么?classTestdefstartp"started"endtest=Test.newtest.startendclassTest2defstartp"started"endendtest2=Test2.newtest2.start 最佳答案 我肯定会说第二种变体更有意义。第一个不会导致错误,但对象实例化完全过时且毫无意义。外部变量在类的范围内不可见:var="string"classAvar=A.newendputsvar#=>strin
如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。
我正在使用Devise在Rails应用程序中,并希望通过API公开一些模型数据,但应该像应用程序一样限制对API的访问。$curlhttp://myapp.com/api/v1/sales/7.json{"error":"Youneedtosigninorsignupbeforecontinuing."}很明显。在这种情况下是否有访问API的最佳实践?我更喜欢一步验证+获取数据,但这只是为了让客户的工作更轻松。他们将使用JQuery在客户端提取数据。感谢您提供任何信息!凡妮莎 最佳答案 我建议您按照以下帖子中的选项2:使用APIke
我正在开发一个Rails2.3.1网站。在整个网站中,我需要一个用于在各种页面(主页、创建帖子页面、帖子列表页面、评论列表页面等)上创建帖子的表单——只要说这个表单需要在由各种Controller)。这些页面中的每一个都显示在相应的Controller/操作中检索到的各种其他信息。例如,主页列出了最新的10篇文章、从数据库中提取的内容等。因此,我已将帖子创建表单移动到它自己的部分中,并将该部分包含在所有必要的页面中。请注意,部分POST中的表单到/questions(路由到PostsController::create——这是默认的Rails行为)。我遇到的问题是当Posts表单没有正