如何自动化的选择和优化EC2系列(五)如何整合RI续购日期
需求背景
看过以前四篇文章的介绍,作为一个云平台的管理人员,我想你应该非常熟悉如何做年度的EC2实例优化了,那么下面你一定会根据优化结果开始准备购买下一年的RI了。但是在很多企业中,由于的历史原因,并不是所有的RI都是在同一天购买的,也就是说,RI的到期日分布在不同的月份和不同的日子,这样一批一批的购买是不是很繁琐呢?你也许会脑洞大开的想,我能不能选择日期临近的RI合并一起购买呢?这样就可以通过逐步减少购买RI的批次从而逐步增加每个批次的数量,合并以后可以省去很多麻烦。
但是选择在哪一天集中购买会更加经济呢?仔细想想,并不是每天的成本都是一样的。我们举个例子,你有30个EC2 instance,最早过期日和最晚过期相差2个月,一共有6个批次。那么究竟选择哪一天集中购买最划算呢?
方案概述
要计算出哪一天购买最划算,我们需要分析一下我们所做决定的成本构成:
假设我们选择在第X天购买,对于任何一个EC2, 在整个批次的RI购买周期内(从最早RI到期日至最晚RI到期日)有以下三部分成本:
1. 原有机型RI的成本,
假设原有的RI在第Y天到期,如果在第X天购买新的RI,则浪费了:
(X-Y)* 原有机型RI每日成本
如果X-Y<=0, 则这部分成本为0
2.新机型RI的成本
(RI购买周期-X)*新机型RI每日成本
如果(RI购买周期-X)<=0,则这部分成本为0
3.On-Demand 成本
假设原有机型RI在第Y天到期,而我们在第X天购买了新机型的RI,则从第Y天到第X天会以On-Demand的价格收取原有机型的费用
(Y-X)*原有机型On-Demand每日价格
如果Y-X<=0, 则这部分成本为0
我们要做的就是将每台EC2的这三部分成本加起来,选择一个合适的日子,使这三部分的成本之和最小。
我们使用第三篇文章介绍的优化方法生产的优化结果文件作为输入,输入的Excel的每条记录需要包含如下信息:
ri_expired_date | target_price | source_price | source_ondemand |
ri_experied_date:源系统EC2 RI的到期日(日期类型)
target_price:目标EC2的一年标准RI实例价格
source _price:源EC2的一年标准RI实例价格
source _ondemand:源EC2的On-Demand实例价格(每小时)
示例输入文件的格式如下:
上面的结果显示总计有52台服务器,原来分了7个批次购买RI,最早到期日是5月21日,最晚到期日是6月12日。我们要计算的是如果这52台服务器今年一起购买RI,那么在哪一天购买最划算?
下面这个Python 程序(ri_plan.py)就是根据上述方案阐述的思路编写的,可以很好地解决这个问题。
运行后的结果如下:
Recommended date to buy RI is 2019-05-28
从上述运行结果可以看出,5月28日购买RI是最好的选择。
本文中的完整程序可从这里下载:
https://github.com/shaneliuyx/awscnprice/tree/master/examples
————
如何自动化的选择和优化EC2系列(一)利用AWS Price List API生成中国区的EC2 价格表
如何自动化的选择和优化EC2系列(二)在迁移项目中,如何自动选择最经济的EC2
如何自动化的选择和优化EC2系列(三)如何进行EC2优化,进一步优化成本
如何自动化的选择和优化EC2系列(四)如何为SAP应用选择合适的EC2
如何自动化的选择和优化EC2系列(五)如何整合RI续购日期(本博文)
本篇作者
相关文章
- 推出 Amazon Honeycode – 无需编写代码即可构建 Web 和移动应用程序
- 隆重推出 AWS Snowcone – 一款小巧、轻便、坚固、安全的边缘计算、边缘存储和数据传输设备
- 在 Amazon Personalize 中引入推荐分数
- 从 Amazon RDS for PostgreSQL 版本 9.4 升级
- 如何在 AWS 上构建并行文件系统 BeeGFS – 高可用篇
- 使用 Amazon Translate、AWS Lambda 和新推出的 Batch Translate API 翻译文档
- Python+Opencv分水岭算法
- OpenCV-python安装教程
- Amazon SageMaker Debugger 助力 Autodesk 优化 Fusion 360 中的视觉相似性搜索模型
- Java applet对象
- python websocket 聊天服务器
- AWS 容器服务的安全实践
- VNC 还是 RDP? 云上的远程桌面究竟该如何选
- 亚马逊 AWS 官方博客目录 – 历年目录
- 利用 Lambda 和 Falco 为 Amazon EKS 提供安全保护
- JAVA Servlet详解
- 现在开放 AWS Lambda Rust
- 在 Kubernetes 上使用 Spinnaker 构建部署管道
- 使用 TriggerMesh KLR 在 Amazon EKS 中部署与 AWS Lambda 兼容的函数
- 【Java】json JavaBean