如何做好AWS成本优化
日期: 2022-12-29

随着上云的企业越来越多,上云成本问题也受到越来越多的关注。

在上云之后,很多人觉得IT支出不但没有减少,还比以前花的更多了,这到底是什么原因呢?

企业如何通过成本优化,来降低上云的费用?

 

 

 

1 上云的成本

 

 

上云的成本包括:计算的成本、存储的成本、网络的成本、应用和管理成本。

 

 

 

首先我们要注意一点,成本的管理并不是在方案实施以后才需要关注的,而是在设计方案的时候就应该考虑了。

和迁移到云端一样,成本控制和优化需要事先规划,事中分析,并且做好事后评估,然后不断地改进。

任何方案都不是完美的,需要一直进行回顾,并且不断地,与时俱进的提高。

 

 

2 计算成本优化

 

 

EC2 :实例大小+使用时间

Lambda:请求数量+持续时间

ECS:

EC2模式:实例大小+使用时间

Fargate模式:vCPU+内存资源

EC2的计费模式主要是4种,首先是最常见的按需模式OnDemand,然后是预留实例模式Reserved Instance,

也就是签约拿折扣的模式,1年或者3年。还有一种Spot模式,也就是投标模式,谁出的钱多就给谁,但是极不稳定。

目前还推出了一个新的模式,叫Saving Plans,也就是不再按照固定的大小和时长来决定,而是更加灵活的按照使用费用来决定,很多地方都比预留实例模式更加灵活。

EC2的计费模式是按照实例使用时间x实例类型的单价x折扣率来决定的。

Lambda相对于EC2而言,简单很多,计费方式是由请求的数量还有持续的时间来决定的。

当然,由于Lambda有一些免费的额度,使用的量里面可以事先扣除这一部分,只收额外的使用量的费用。

 

 

 

 

上图表格列举出了不同的EC2模式的适用范围,适用模型还有折扣度。

按照AWS过去的知识体系,Spot是最便宜的,但是极不稳定,只适合在无状态的应用下使用,也就是随时可以开始或者终止的应用。标准的RI折扣度可以高达75%,

但是非常的不灵活,基本不能调整,可变RI可以修改大小,但是折扣度掉到了最高62%。这里我比较推荐最新的Saving Plans,

既可对签约的实例进行一部分修改,也可以享受最高72%的折扣。Saving Plans也分2种模式。

 

计算成本优化建议:

 

1. 做好设计,选择合适的实例类型和大小

2. 实时监控计算使用率

3. 对可预测的实例购买长约

4. 使用Auto Scaling

5. 少量计算可以使用lambda,无服务的计算尽量使用spot

6. 尽量使用container,充分利用所有资源

7. 充分利用免费的资源

 

 

 

3 存储成本优化

 

 

S3分为5种,分别是:1. S3标准2. S3智能分层3. S3-IA4. S3 Glacier5. S3 Glacier Deep Archive S3并不是只是简单的按照数据用量来收费。

不同的类型有不同的价格,并且在数据使用费之外,还有别的费用,比如数据请求费和检索费。

从1-5,数据存储费越来越便宜,但是请求和数据检索的费用却越来越贵。所以S3的使用总费用是数据存储费+请求检索费+传输费用。

 

 

 

 

相对而言,EBS就简单很多了,EBS分4种模式:1. 预置的 IOPS SSD(io1) 卷2. 通用型 SSD (gp2) 卷3.

吞吐量优化型 HDD (st1)卷4. Cold HDD (sc1) 卷 数据存储费和IOPS依次降低,其中1.2为IOPS优化,

3.4为吞吐量优化。费用计算也很简单,用量x类型单价

 

 

 

 

 

最后看一下EFS,虽然EFS也分为好几种,但是我们基本上用的都是第一种,标准类的。其他几种大家关注一下就行。

特别是第5项,不频繁访问请求,这个有点类似S3的检索费。

 

 

 

下面用最常用的S3做了一个列表,大家可以对比一下各种费用。可以看到这里的存储费依次降低,

但是检索费和其他的费用则呈现增长趋势。所以我们在做选择的时候,不光要考虑费用,还需要考虑具体用途。

 

 

 

 

 

存储成本优化建议:

 

1. 选择合适的存储容量和类型

2. 尽量减少跨AZ数据复制

3. 配置合理的生命周期

4. 定期清理磁盘,删除不用的内容

5. 使用数据压缩

6. 监控存储数据用量

7. 释放不用的资源

 

 

 

4 网络成本优化

 

 

跨AZ,跨VPC访问:跨越类型+数据量

ELB:数据传输量+数据位置

NAT网关:数据处理+时间

 

 

这里通过一个例子来说明。从上图可以看出,网络费用分布在传输的各个环节。虽然都是小钱,加起来数字就会很可观了。

所以说,企业在上云之后,除了存储费和计算费以外,网络费用占相当大的一个比例,对于某些企业来说,网络的成本甚至高于计算的成本。

 

网络成本优化建议:

 

1. 尽量选用私有IP

2. 尽量减少跨AZ数据复制

3. 尽量使用VPC-peering和TransitGateway

4. 尽量使用Endpoint Gateway,将流量尽量留在内网。

5. 仅在必须的时候使用NAT Gateway

6. 仅在必须的时候使用S3 Cross-region replication,上面有说过,S3的数据传输是要收费的,主要就是这里,
除了数据传输费用以外,还有网络传输的费用。

7. 使用数据压缩,在可能的情况下,尽量压缩数据,以减少传输的时间和费用。

8. 监控网络流量的使用,实时监控网络的流量和费用,防止突发的人为或者意外的大规模数据传输而导致成本飙升。

9. 释放不用的资源,比如弹性IP,减少浪费。

 

 

 

5 应用和管理成本优化

 

 

系统类型的选择:Linux vs Windows

应用架构的选择:分层架构 vs 微服务

服务模式的选择:Server vs Serverless

 

 

 

 

上图的表格,列举出了AWS对应的服务模式,On-premises就是传统的机房,服务器模式,

这种模式的成本最低,但是灵活性最差,部署起来通常需要数周时间。相对而言,EC2是分钟级别,ECS是秒级,

最夸张的Lambda则是毫秒级,非常适合对计算有严格要求的方案。但是事情总有两面,得到了最高的灵活度,

同时也要付出最高的代价。毫秒级的灵活度需要的成本最高。所以,我们在设计方案的时候,

需要将客户具体需求加入进来,而不是简单地建几个EC2,将本地虚拟机变成云端虚拟机就行了的。

管理成本

我们需要有一些趁手的工具来对成本进行监控和管理。AWS为我们提供了几个方案,

比如Tagging用来对资源成本进行控制,AWS organization用来对账户的成本进行控制,

AWS Budgets则用来控制成本的总量。CloudWatch是大家熟悉的监控工具,也可以用来监控使用成本。

 

 

Tagging:资源成本控制

AWS Organization:账户成本控制

AWS Budgets:控制成本总量

CloudWatch:监控成本

 

 

Tagging就是用来对资源分配进行标记,比如这台EC2是IT部门的,那台是会计部门的,

这样可以对不同的资源进行成本监控,知道哪个部门甚至哪个人用了多少。

如果公司有很多不同的账户,比如北京分公司,上海分公司,每个公司都有自己的AWS账户,

那么AWS Organization就可以不同的管理策略来监控不同账户的使用,从而实现对成本的管控。

而AWS Budgets,则是用来对服务进行一个预算设定和监控,看看资源的使用是否超过了成本,比如这张图,

我们可以看到AWS Budgets列出了一系列详细的成本统计和使用趋势,从而可以对总体的成本进行监控和微调。

 

 

6 综述

 

 

 

综上,关于AWS的成本优化,我们需要注意以下几点:

  • 选择合适的架构设计
  • 减少不必要的服务
  • 减少不必要的服务
  • 制定合适的资源生命周期
  • 定期回顾现有设计并提出改革方案
  • 参考官方成本优化文档和成本优化工具
  • 关注AWS最新的更新

 

这里推荐一些成本计算工具,和成本优化的参考资料,大家可以参考。

 

AWS总体拥有成本(TCO)计算器http://aws.amazon.com/tco-calculator

AWS月度计算器:https://calculator.s3.amazonaws.com/index.html

 

 

 

没有完美的设计,云上的架构和成本优化都是需要不断更新、调整的;成本优化不是消灭成本。

 

 

 

 

 

 

 

 

原文出处:[https://zhuanlan.zhihu.com/p/113940698](https://zhuanlan.zhihu.com/p/113940698)

作者:ozjacky