云平台的成本管理原创
# 云计算的成本管理
云技术给我们带来了新的技术革命,当下云厂商的云产品几乎已经涵盖了常见的基础硬件、中间件的服务能力,并不断的在更大范围上扩大云产品的品类,并不断的将客户的需求转化为标准化的产品。伴随各云厂商产品家族的扩张,产品组合也变得越发复杂,同时基于软件定义的能力,云产品的计费粒度及方法也变得更加复杂,伴随企业云规模得不断增长,如何基于云产品实现成本管理已成为各企业也面临的一个必然需求,其同样也为运维工作带来了新的课题。
# 企业上云的必然性
云技术的核心是软件定义一切。以前的网络、服务器等基础设施,由于厂商、技术等原因,存在诸多标准和技术支持能力,致使对其维护和管理的技术要求也千差万别。云技术的到来,带来了更广范围的统一标准和管理理念,其可实现对计算、存储、网络资源的统一管理。由于云厂商提供了更标准的接口能力,用户也可以更方便的通过软件实现基于云平台的自定义管理能力。如在SaaS层,新的微服务架构、云原⽣应⽤等,也基于软件定义思想构建的云计算平台提供了良好的⽀撑。
云基础设施更具有便捷性。云厂商以平台产品形式对用户隐藏了底层的硬件资源,作为厂商,其要为用户提供相对用户自建机房更高的SLA 保障。同时,用户只需考虑系统层或更高应用层的使用和维护,相对维护的工作会更简单。对用户来讲,降低了云资源使用的门槛,随用随取,简单方便,只需更低的前期投入和维护成本。
云技术是先进生产力。蒸汽机的发明是世界工业化开的始标志,使用机器生产代替手工劳动,推动劳动形式从工厂手工业向机器大工业转变,加速了工业化进程。现代标准化更是工业革命的产物,标准化已不仅仅是产品质量的保证,其也更成为助推经济社会发展的加速器。云技术将大量基础设施的使用、维护实现统一化和标准化,基于软件定义一切的核心原则,更是推动了基础设施自动化的发展,其同样是使大量手工劳动形式向自动化形式转变。云技术是信息化时代信息工业革命的重要标志,其通过推动信息化基础设施标准化、自动化的进程,提升了工作效率,推进生产力的变革。
总之,采用云技术的基础设施管理是先进生产力的选择,企业上云也是必然趋势。
# 云平台成本管理
企业自建机房,通常都需要采购很多网络设备及服务器,一次性成本虽高,但短期的持续性投入却不大。同样,由于硬件设备等都是通过每次采购实现的,采购后运维人员仅需对硬件的利用率做些优化,相对并无成本节约的考量和需求。
现在企业上云了,基于软件定义及云厂商可弹性资源提供的能力,为用户提供更多成本节约的可能,如何基于云技术实现成本节约,成为了一个新的需求,那么,使用云技术真的可以实现成本的节约,为企业带来省钱的效果吗?
我认为,云产品成本管理的核心要点就是按需购买,对于企业来讲,主要有如下3个方面:
首先是产品:通过云产品的使用,企业可以更灵活的在极短的采购周期内完成云产品的购买,更可通过云平台以极小的代价完成云资源的试用,降低企业的试错成本。伴随云产品各种技术的变革,诸如软件即服务(SaaS)和函数即服务(FaaS)新产品形式的使用,企业在应用产品开发的投入及投产周期也得到了极大的缩短,其各种隐性成本的投入也得到了极大的缩减。
其次是资源:资源是购买云产品后企业可利用云产品的范围,通常自建机房,计算、网络等资源都是固定的,但云厂商提供的云产品资源则是可动态按需调整的,这给企业的按需购买带来了可能,基于云产品的秒级弹性技术,可让企业根据产品自身的需求按时、按量的灵活、动态的控制资源的成本投入,进而实现节约的目的。
最次是人员:在传统的运维职业范围,很多技术层出不穷,其主要依赖从业人员的自主性及机会性使其对某些技术具有了经验性的专业能力。但在云厂商的推动下,运维人员具有了基于云产品技术的更全面的掌握,其使得企业对维护人员的获取及管理成本大大降低。同样由于云厂商技术的支持,更对企业自身技术人员能力的需求大大降低,使得企业在运维人员的投入上实现了成本节约。
# 一个基于AWS云EC2的省钱实战
各公有云厂商的云主机产品都提供了按使用情况计费的付费方式,根据这个方式,当选购的云主机不用时关机,就可以不被计费,降低云产品的支出。此处做了个AWS 云基于Clouewatch 与Lambda 对EC2 实现定时开关机得实践。设置EC2服务器每天晚上23点关机,早上8点开机,进而降低日常的成本支出。
# 相关云产品
产品名称 | 免费额度 |
---|---|
EC2 | 无 |
Lambda(请求) | 1百万次请求/月 |
Lambda(执行时长) | 400000.0秒/月 |
CloudWatch(时序存储) | 50G / 月 |
CloudWatch(存储) | 50G / 月 |
- 此处得EC2 并没有使用AWS 的免费配置实例,所以并没有免费额度。
# 方案实施
# IAM 权限配置
首先是要配置lambda 脚本的执行角色和授权。
- 创建授权策略 在IAM - 策略页面,创建策略规则StartStopEc2,选择json方式,复制如下代码粘贴即可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注:aws中国区时, "aws" 要换成 "aws-cn"
- 创建角色
在IAM - 角色页面,创建角色,可信实体选择AWS服务,使用案例选择Lambda,点击下一步。在添加权限页面,选择上面创建的策略 StartStopEc2,角色名为 StartStopEc2。
# Lambda 配置
Lambda 配置开机脚本及关机脚本,此处在Lambda 服务上直接加入python3 的脚本,该脚本直接引用了boto3 组件,在当前账号授权的前提下实现对应实例的开关机操作。
- 开机脚本 StartEC2
在Lambda - 函数页面创建函数,在执行角色处选则StartStopEc2
# StartEC2
import boto3
region = 'us-east-2'
instances = ['i-xxxxxxxxxxxxxx']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.start_instances(InstanceIds=instances)
2
3
4
5
6
7
- 关机脚本 StopEC2
在Lambda - 函数页面创建函数,在执行角色处选则StartStopEc2
import boto3
region = 'us-east-2'
instances = ['i-xxxxxxxxxxxxxxx']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.stop_instances(InstanceIds=instances)
2
3
4
5
6
# CloudWatch 配置
- 创建开机事件规则 startEC2
CloudWatch - 规则 - 创建规则,规则类型选择计划,
计划时间:0 8 * * ? *
目标选择: Amazon Web Service的 lambda 函数 StartEC2
- 创建关机事件规则 stopEC2
CloudWatch - 规则 - 创建规则,规则类型选择计划,
计划时间:0 23 * * ? *
目标选择: Amazon Web Service的 lambda 函数 stopEC2
# 扩展阅读
https://www.finops.org/introduction/what-is-finops/
- 01
- git的tag与branch 原创05-21
- 02
- 阿里云SLS日志服务的数据脱敏及安全管理 原创03-21
- 03
- 可观测性监控中的数据安全 - DataDog中的监控数据脱敏实战 原创03-04