写点什么

如何整合 RI 续购日期

  • 2019-09-29
  • 本文字数:2416 字

    阅读完需:约 8 分钟

如何整合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_datetarget_pricesource_pricesource_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)就是根据上述方案阐述的思路编写的,可以很好地解决这个问题。


import pandas as pd
from datetime import *
from datetime import date
from datetime import datetime

table = pd.read_excel("blog5_output.xlsx")
start_day = min(table['ri_expired_date']).date()
end_day = max(table['ri_expired_date']).date()
duration = (end_day - start_day).days
total_item = table.shape[0]
cost = []
for x in range(0, duration + 1):
sub_total = 0
for i in range(0, total_item):
current_item_date = (table.loc[[i]].ri_expired_date)[i].date()
# old price duration
op_day = ((current_item_date - start_day).days) - x
# on demand price duration
od_day = x - ((current_item_date - start_day).days)
# new price duration
np_day = (duration - x)
if op_day < 0:
op_day = 0
if od_day < 0:
od_day = 0
sub_total += ((table.loc[[i]].source_price)[i] / 365 * op_day + (table.loc[[i]].target_price)[i] / 365 * np_day + (table.loc[[i]].source_ondemand) * od_day * 24)[i]
cost.append(sub_total)
optimize_cost = min(cost)

print("{} {}".format(' Date', ' Cost'))
for i in range(0, len(cost)):
if cost[i] == optimize_cost:
recommand_date = start_day + timedelta(days=i)
current_date = start_day + timedelta(days=i)
current_date = datetime.combine(current_date, datetime.min.time())
print("{} {:.2f}".format(current_date.strftime('%Y-%m-%d'), cost[i]))
print ('\nRecommanded date to buy RI is {}'.format(recommand_date))
复制代码


运行后的结果如下:


$ python ri_plan.py    Date       Cost2019-05-21   135170.432019-05-22   129999.902019-05-23   124917.962019-05-24   119982.302019-05-25   115046.642019-05-26   110110.982019-05-27   105175.322019-05-28   100239.652019-05-29   102823.482019-05-30   105407.302019-05-31   107991.122019-06-01   110574.952019-06-02   113158.772019-06-03   115742.592019-06-04   118326.422019-06-05   127722.572019-06-06   137703.242019-06-07   147683.912019-06-08   157664.582019-06-09   167645.262019-06-10   177625.932019-06-11   187606.602019-06-12   197587.27 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续购日期(本博文)


作者介绍:


刘育新


AWS ProServe 团队高级顾问,长期从事企业客户入云解决方案的制定和项目的实施工作。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/how-to-use-ec2-combine-ri-date-seriesfive/


2019-09-29 16:30970
用户头像

发布了 1959 篇内容, 共 167.4 次阅读, 收获喜欢 82 次。

关注

评论

发布
暂无评论
发现更多内容

EMQX Enterprise 5.6 发布:新增 Amazon S3 数据集成、JSON Schema 验证函数

EMQ映云科技

mqtt emqx mqtt broker

猫头虎博主深度探索:Amazon Q——2023 re:Invent 大会的 AI 革新之星

亚马逊云科技 (Amazon Web Services)

re:Invent 亚马逊云科技 生成式人工智能 Amazon SageMaker Amazon Q

碳视野|新能源产业链看过来! 欧盟关键原材料法案生效!

AMT企源

数字化转型 新能源 双碳 碳管理

ETL中Python组件的运用

谷云科技RestCloud

Python ETL 数据集成

你应该知道的21个html小技巧

南城FE

html 前端 代码优化

JSON 迎来的首个大客户竟是那种网站

胡译胡说

JavaScript json

倒计时1天 | 袋鼠云春季发布会完整议程出炉!快快预约直播

袋鼠云数栈

AI 指标体系 大模型 指标建设

天池医疗AI大赛[第一季] Rank5解决方案

阿里云天池

阿里云

企业上了MES系统后,能有什么好处?

万界星空科技

生产管理系统 mes 万界星空科技

人社大赛算法赛题解题思路分享+季军+三马一曹团队

阿里云天池

阿里云

【IJCAI-2018】搜索广告数据探索与可视化

阿里云天池

阿里云

零基础入门NLP - 新闻文本分类比赛方案分享 nano- Rank1

阿里云天池

阿里云

【教程】App打包成IPA文件类型的四种方法

百度智能云向量数据库 VectorDB 性能报告

Baidu AICLOUD

向量数据库

用 AI 让数据分析更智能 - Amazon Q 在 Amazon Quicksight 中的应用

亚马逊云科技 (Amazon Web Services)

数据分析 生成式人工智能

如何找到香港虚拟主机5元一月的方案?

一只扑棱蛾子

香港虚拟主机

不要在自我提升方面吝啬

老张

自我提升 能力提升

消息队列选型之 Kafka vs RabbitMQ

字节跳动云原生计算

kafka 消息列队

全面解析基线版本应用的探索实践

鲸品堂

测试 基线 运营商

新一代营销费用管理,有效提升线下渠道投资回报率

赛博威科技

【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)

阿里云数据库开源

数据库 阿里云 分布式数据库 PolarDB-X

大型央国企“信创化”与数字化转型的建设思路

优秀

信创 央国企数字化转型

二手车价格预测第十三名方案总结

阿里云天池

阿里云

深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性

GousterCloud

Linux Kenel 虚拟网卡

如何整合RI续购日期_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章