大话云计算:从云起源到智能云未来
上QQ阅读APP看书,第一时间看更新

3.2 省钱吗?服务定价与计费方式

云计算节省企业资金最重要方式之一就是取代了传统IT架构,企业无须购买、维护并升级软硬件设备,只需在云端按需订阅服务,并按用量付费即可,从而节省了昂贵的硬件、场地、安装和人工成本。便利性和成本效益也是云计算的主要优势之一。

从另一个角度看,通过按需使用的方式,云计算也为企业节省了大量支出,这是云平台的弹性所实现的。企业无须囤积大量的服务器,即可轻松、快速地从云端添加或减少资源。对于任何业务来说,这种方式避免了过度配置和功能浪费,只需在云端使用所需的功能组件即可。

随着服务模式的转变,云服务的定价方式也和服务器等传统采购有很大区别。本节将详细介绍云计算的定价方式,让读者可以做出符合预算、具有财务优势的云服务采用决策。

3.2.1 云服务的定价因素

总体而言,按需付费是云服务的定价核心。如图3-5所示的曲线图直观地解释了传统的预先购买未来一大段时间的计算资源(黑色)和按需实时购买计算资源(灰色)的成本区别。

图3-5 按需付费(灰色)和按峰值需求购买硬件(黑色)的成本区别

当谈到云上资源的定价时,很多因素都要考虑进去。首先,服务提供商的目标是利润最大化,客户希望以更低的价格获得更高质量的服务。其次,由于销售相同服务的供应商数量众多,在云上销售服务的竞争非常激烈。此外,价格受以下因素影响。

● 租期,可视为供应商与客户之间的合同时间。

● 资源的初始成本。

● 折旧率,也就是这些资源被使用的时间。

● 服务的质量。

● 硬件的年限。

● 维护费用。

3.2.2 略微混乱的定价策略

云服务商对不同服务制定不同的计费机制。对于初级用户,不同的计费机制可能不易分辨。

例如,亚马逊云中的Lambda函数是根据函数请求的数量、持续时间和代码执行所需的时间来收费的。Lambda的免费套餐包括每月100万次的免费请求和每月40万GB×s[1]计算时间,用户可以选择免费获得100万次请求和之后按每100万次请求0.2美元交费,也可以选择使用“持续时间”套餐,从而获得每月40万GB×s的免费额度,然后以0.00001667美元每GB×s交费。听起来让人难以分辨哪个更加划算。

另一个例子来自可以在Azure中运行的数据库。数据库可以作为单个服务器运行,也可以由弹性数据库池进行定价,每个弹性数据库池根据数据库的类型有不同的表,然后根据存储、数据库数量等进行定价。

使用谷歌Kubernetes集群可以对集群中的每个节点收费,并且每个节点都根据大小收费。节点是自动伸缩的,因此价格将根据用户需要节点的数量上下浮动。但并没有简单的方法知道用户用了多少节点或者用户需要多少节点,这让用户很难提前计划。

本节尝试列出了几种不同的定价类型。

1.固定的订阅价格

固定的订阅价格是云服务里最简单的定价策略。订阅的价格只与资源的类型和使用时长有关。由于不同资源的动态调度能力不一样,对于弹性较大、部署简单的资源,云服务甚至可以以秒为单位定价,如Azure上的Docker容器的租用价格;对于部署相对耗时的应用,Azure也可以做到按小时付费,如图3-6所示的Service Bus的高级版的费用,无视访问量、单位时间负载等因素。

图3-6 Service Bus的高级版本的费用

2.按资源各个维度的使用量付费

按资源各个维度的使用量付费是云服务里最常用的定价策略,也是用户省钱的关键。对于一个资源的集合,它会单独对集合内的不同资源按用户的实际使用量计费。如图3-7所示是Azure的块存储(Blob Storage)的定价方式,可以看到,它根据不同的数据访问频率来分类定价,在同一分类下,价格只与用户的使用量有关。

图3-7 Azure块存储的定价策略

3.混合定价策略

混合定价策略将前两种定价策略进行了结合,用户需要先支付一个订阅价格,然后再按照使用量来支付额外的费用。有趣的是前面提到的Service Bus,不同于之前提及的Premium版,它的标准版服务使用了混合定价策略。用户先要按小时支付一个基础费用,然后再根据自己的使用量支付额外的费用,如图3-8所示。

图3-8 Service Bus标准版的定价

3.2.3 如何监控和控制成本

云服务的存在是为了帮助企业在基础设施上节省资金,如果用户知道如何使用,那么云服务是很好的选择。为了帮助用户优化云环境并节约成本,这里有以下几点建议。

● 获得账单总览。用户可以使用平台自带的账单系统、第三方工具甚至通过平台提供的程序接口(API)编写自己的脚本来分析账单。

● 了解使用的每个服务的计费方式。下载账单并和工程师团队一起分析计费的细节。

● 确保没有使用任何不该使用的业务。在不需要时关闭服务,如晚上和周末的开发和测试服务实例,考虑服务被外界使用的高峰期和低谷期,尽量提前做好计划。

● 定期检查,尽可能多地提前计划,制定使用时间表。

● 制定各个服务的管理策略,以便用户只能访问环境中指定的特性和区域,以及指定用量的服务(如存储空间的大小)。