在云中经营业务与在本地部署中经营业务有着根本的不同。当操作不同时,牵制成本的策略也有所不同。
从经济方面来说,数据中心需要大量的建设资本支出,服务器和软件许可证的额外资本支出,以及为服务器和冷却系统供电以及维护和管理的较小但重要的运营支出。
在云中没有资本支出。相反,它有明显的运营支出,以服务器虚拟机实例、存储、网络流量、软件许可证和其它繁琐的细节来计费。
从成本管理的角度来看,将计算负载转移到云中有很大的好处,但也有巨大的风险。
当有人想要在你的数据中心使用新的服务器机架时,就需要审批采购订单并掂量其合理性,而这个过程是完全受管控的。这需要许可。很多公司也需要6个月的时间。一旦安装了机架,没有人会注意它的使用强度是多少,除非它的负载太重以至于性能不佳。是的,这从成本的角度来考虑是低效的——因此需要推动数据中心中的虚拟机和容器(如Docker)来提高服务器利用率。
如果有人想要在云中建立一个新的虚拟服务器集群,则可能需要几分钟的时间才能将其迁移。虽然你可能需要有新的云资源管理审批或对每个部门的云资源进行配额管理的政策,但几乎所有访问云端账户的人都可以在需要时创建自己想要的内容,并先斩后奏——如果管理层发现的话。
这种自由是好是坏都取决于你的观点。从业务灵活性和功能的角度来看,这是很好的。从财务管理的角度来看,如果做到正确,可能会很好,否则这是一个潜在的灾难。
在本文中,我将讨论如何避免“云价位震撼”。我将从以优化云支出的个人技术手段开始,并以云支出管理为主题。
资产利用
据埃森哲云计算(Accenture Cloud)的全球董事Michael Liebow称,云服务可能导致“僵尸启示录”——不是人类僵尸,而是僵尸服务器。僵尸服务器利用率低或根本没被使用:它们耗费你的金钱,但不做任何事情。
Liebow和他的同事们还在其它地方写了关于孤立虚拟机(orphan)的消息,这些是在使用它们的资源被删除后剩下的服务,以及超大的虚拟机的过渡消耗(glutton)。如果管理不当,这三种病态的情况可能会使你的云计算费用增加20%至40%。
要及时发现云中未充分利用的资产并不容易、也并非自动化。云提供商的账单只能按月计一次费,对于拥有大量云资产的大型企业来说,可能会收取超过1亿的费用。如果你等收到账单才行动,你可能会因为虚拟机和其它已经闲置了30天的服务而被收取大量费用,而它们很久以前就被关闭或缩减了。
当你必须用多个账户管理多个云时,这更加困难。好消息是,你通常可以每天以电子化的形式提取云计算提供的信息;坏消息是,你可能需要许可或开发新的工具来管理你的云资产。
容量预购
减少你期望使用一年或多年的云资源支出的一种方法是以折扣的形式预先购买你的基础容量。每个云提供商的做法都略有不同,并定期更改其计费策略。警告:这是一个令人困惑的领域,即使提供者声称其定价是透明的。
亚马逊解释其预购计划:
“与按需实例的定价相比,预留实例为你提供了巨大的折扣(高达75%)。此外,当预留实例被分配到特定的可用区域时,预留实例会提供容量预留,在你需要时启动实例时让你信心倍增。”
“对于具有稳态或可预测使用量的应用程序,与使用按需实例相比,预留实例可以显著地节省成本。”
亚马逊推荐预留实例:
·稳态使用的应用
·可能需要预留容量的应用程序
·可以承诺在1年或3年期限内使用EC2以减少其计算总成本的客户
作为一个具体的例子,试想一下运行Linux的西弗吉尼亚地区中的为计算而优化的c4.8xlarge虚拟机实例,每小时按需支付1.591美元,并提供36个虚拟CPU和60GB内存。如果你保留实例一年并提前付清,你的费用可能会下降到每小时0.947美元,节省了40%。如果提前付清标准的3年使用期,费用降至每小时0.621美元,节省了61%。对于能让你更灵活可转换的3年使用期,每小时收费0.739美元,节省了54%。预付款每减少一点,实际费用就随之上涨一点,但差异大致与时间成本一致。

客户可以灵活地更改可用区域,实例大小和标准预留实例的网络类型。可转换的3年预留实例提供了额外的灵活性,例如在预留实例的期限内使用不同实例群、操作系统或租约的能力。
Azure在其通用D32-v3实例中具有类似大小的虚拟机(更少的CPU,更多的RAM),它提供32个虚拟CPU和128GB内存,每小时按需支付1.60美元。Azure不提供预留实例:而是提供了一个企业协议,该协议承诺制定一个可以降低价格的预付款,尽管折扣级别尚未公布。
谷歌 提供一个有32个虚拟CPU和120GB内存的n1-standard-32虚拟机,每小时1.52美元,每月都有持续使用的折扣。你不必承诺延长使用以获得持续使用折扣:相反,它将自动应用于25%,50%和75%使用水平的增量分钟数。
谷歌还为虚拟机提供了承诺使用折扣,你可以通过购买一到三年的承诺合同来激活。任何使用折扣的资源都不符合持续使用折扣的条件。通过使用折扣,虚拟机价格比常规虚拟机价格便宜57%。折扣适用于区域内vCPU或内存的总数,以便它们不受实例机器类型更改的影响。承诺使用折扣没有预付费用。承诺使用折扣每个月都会应用到你的账单。圈套就在于,无论你是否使用它们,你都将为承诺付费。
竞价和低优先级实例
Amazon EC2 竞价实例允许你对备用的Amazon EC2计算能力进行出价。与按需实例相比,竞价实例常常打折,因此可以显著降低运行应用程序的成本,在同样的预算下增加应用程序的计算容量和吞吐量,并启用新型的云计算应用程序。
当你的出价超过现货价格时,并且与按需实例相比能提供50-90%的折扣时,即可运行竞价实例。使用竞价实例,收取的费用就不会超过你指定的最高价格。当你的实例运行时,你将按该期间生效的竞价价格付费。如果竞价价格超过你的指定价格,你的实例将在终止前收到两分钟的通知,你的实例运行的超出部分的时间将不会被收费。
如果你的竞价实例请求包含持续时间要求,你的实例将继续运行,直到你选择终止它为止,或者直到指定的持续时间结束为止;由于竞价价格的变化,你的实例将不会被终止。我查了一下,目前,一台带有Linux的c4.8xlarge虚拟机的竞价实例在北弗吉尼亚地区每小时的成本为0.3591美元,而按需则为每小时1.591美元。

Azure将其等同于AWS的竞价实例的东西称为“低优先级”。当我查看时,东区的低优先级D32-v3实例每小时成本为0.345美元,而按需则为每小时1.60美元。但是,我无法在账户中选择此选项。

谷歌 推出的与竞价实例对应的东西称作“抢占式实例”。抢占式虚拟机是一个实例,你能以比正常实例低得多的价格创建和运行。但是,如果Compute Engine需要访问其它任务的资源,则可能会终止(抢占)这些实例。抢占式实例是额外的Compute Engine容量,因此其可用性因使用量而异。目前,北弗吉尼亚州地区的一个抢占式n1-standard-32实例每小时成本为0.3424美元,而全价为每小时1.712美元,持续使用价格为每小时1.52美元。据谷歌的说法,抢占式费用通常在每个项目每7天的5%到15%的范围内变化。

容器
未充分利用的服务器和新机架的有限空间致使企业将其数据中心的一些专用服务器转换为虚拟机的主机。然后,当虚拟机主机中的内存使用成为问题时,企业会将部分虚拟机转换为容器的主机。
用虚拟机虚拟化与用容器虚拟化之间的基本区别在于,除了应用程序软件之外,虚拟机还包含完整的操作系统和一整套虚拟化硬件,而容器仅包含操作系统的一部分、某些库和应用程序软件。虚拟机和容器都与其它应用程序隔离;虚拟机提供更多的隔离和更好的安全性,尽管内存使用成本很高。
云中最昂贵的租赁资源之一是RAM,容器通常只需要三分之一的RAM来运行与虚拟机相同的软件。经营容器中的云资产就成了有吸引力的成本主张,只要减少隔离度不成问题。
直到最近,容器的使用才被限制在基于Linux的系统中,并且缺乏对容器的编排,工具支持和检测。这些都不再是真正的问题,将你的负载转移到云中的容器是简化操作并减少云支出的好方法。
在AWS,运行容器不需要额外的费用,你只需支付底层的虚拟机和存储空间。Azure可以让你直接在池中创建和使用容器,并为每个创建的实例收取0.0025美元,加上每GB秒0.0000125美元和每核心秒0.0000125美元。例如,如果你同时运行三个容器长达一个月,并且每个容器使用1GB的内存和2个内核,那么你每月为此支付的费用将少于300美元。

Google Container Engine在Kubernetes之下运行容器节点的集群,并运行在Compute Engine之上;你为虚拟机付费。Kubernetes管理收取少量费用,6个或更多个节点的群集每小时花费0.15美元。
无服务器
无服务器云计算,或者更准确地说是功能即服务(Functions as a Service),有可能大大降低将负载放入云中所涉及的成本和工作量。AWS Lambda、Bluemix OpenWhisk、Google Cloud Functions和Azure Functions都提供了一个模型,开发人员定义了一个按需运行的功能,为该功能创建触发器,并设置了该功能的内存分配。当有功能需要运行时,云计算基础架构负责为该功能分配容器,因此开发人员不必担心容量或可扩展性。
无服务器成本通常基于触发器的数量(通常是可忽略的电荷)、执行时间和使用的内存量。单个功能调用的运行时间限制为5到10分钟,具体取决于平台,但少于一秒的运行时间更常见。大多数平台还限制了可以同时运行的功能的数量,并且每个月都提供捆绑的免费容量。
按照实际经验来说,如果总功能执行时间每月少于50万秒,或大约等于五分之一个月,则使用无服务器功能比运行小型虚拟机便宜。这些数字因供应商而异,无论你将功能与全价的虚拟机实例还是打折的虚拟机实例进行比较。
在进行成本分析时,你还需要把开发人员和操作时间算进去,而这个成本对于无服务器功能而言通常较低,因为更多的管理任务被推送到云提供商。在开发和运营成本方面,使用无服务器功能可以比运行小型虚拟机更便宜,即使总功能执行利用率是每月75%。
使用无服务器功能的一个缺点是计费很复杂。如果你将功能托管在虚拟机中,那么该虚拟机每个月都会生成一个计费栏,无论功能被调用了多少次。如果你的无服务器功能每月被调用400万次,则在结算日志中将有400万个事件。
云支出管理
鉴于云定价的复杂性以及与数据中心管理的差异,很多公司需要采用新的云计算支出管理工具。在互联网上搜索“云支出管理”、“云成本管理”或“云管理平台”至少会出现6个可行的可能性,以及一系列无关紧要的结果。虽然你可以使用本机的资源标签和报告功能来管理单个云平台的使用,但如果你使用两个或多个云提供商,那么很难掌握使用量和成本。
无论你使用什么工具,管理云支出的关键是标注你的资源。如果你查看一个结算栏的项目,就马上能看到它用于与Fizzpop产品相关的开发和测试,这总比你只知道虚拟机的序列好要好得多。如果该标记进入你的报告和管理工具,以便你可以聚焦于图形中的“僵尸”,并明白了它的预期目的和集体归属,你可以了解实情,并切实对未使用的服务器虚拟机采取措施。
管理云成本并不容易,而且大多数IT组织的数据中心都无法用其具备的ITIL流程和工具真正地做到这一点。为了有效地管理你的云资产,你每天都要监控成本,必要时通过关闭资源来进行干预、缩小规模或对其进行计划任务,而不是一直运行。