HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

如何整合 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:30725
用户头像

发布了 1848 篇内容, 共 113.9 次阅读, 收获喜欢 78 次。

关注

评论

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

金融机构如何打击帮信罪和掩饰罪?

芯盾时代

风险管理 反欺诈 账户安全 金融风控

最高25k $MPC 资助,Partisia Blockchain 推出全新开发者计划

股市老人

CompletableFuture 使用指南

FunTester

快手自研视频生成大模型「可灵」来啦!

快手技术

大模型 文生视频 可灵

在 Go 中如何让结构体不可比较?

江湖十年

Go golang golang 面试 编程技巧

SQL 入门教程:从基础到实践

霍格沃兹测试开发学社

Partisia Blockchain 推出全新开发者计划,最高获 25k $MPC 资助

股市老人

蓝易云 - centos服务器a.sh内如何 在指令中自动加入当前时间?

百度搜索:蓝易云

centos 服务器 云服务器 服务器租用 高防服务器

Partisia Blockchain 推出全新开发者计划,最高获得 25k $MPC 资助

石头财经

FinalReference 如何使 GC 过程变得拖拖拉拉

bin的技术小屋

JVM java

深度解析:基于Pixi渲染引擎打造沉浸式「滑雪竞技」小游戏!

快手技术

前端 H5 快手 pixi 渲染

2024年移动端技术探索

轻口味

android 移动端

蓝易云 - springboot配置静态资源访问

百度搜索:蓝易云

CSS JavaScript Linux Spring Boot 云服务器

精准控制:Python 输入数值范围限制详解

霍格沃兹测试开发学社

OpenTiny CCF开源创新大赛赛事指南来啦,助力你赢取10W赛事奖金

OpenTiny社区

Vue 前端 低代码 组件库 OpenTiny

数据库管理和开发:Navicat 17 for MongoDB mac 激活版

你的猪会飞吗

Mac软件推荐 mac破解软件下载

Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读

TuGraphAnalytics

知识图谱 tugraph rag DB-GPT OpenSPG

蓝易云 - Nginx查找耗时的接口

百度搜索:蓝易云

nginx 云计算 运维 服务器 云服务器

Java 学习

玄兴梦影

学习 java

最高25k $MPC 资助,Partisia Blockchain 推出全新开发者计划

BlockChain先知

K歌技术大揭秘:从“清唱找调”到“智能修音”,如何让歌声自然飞扬、声动四方?

快手技术

回森 业务创新 智能修音

攀登不止,华为数据库论文入选SIGMOD 2024,技术创新再谱新篇

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号2024年6月PK榜

【CVPR2024】面向StableDiffusion的编辑算法FreePromptEditing,提升图像编辑效果

阿里云大数据AI技术

人工智能 深度学习 算法 CVPR 图像编辑

Navicat for PostgreSQL mac(PostgreSQL 数据库开发工具)v17.0.9版

Mac相关知识分享

Mac软件 数据库开发工具 软件下载

生态共赢|心大陆携手搜狐视频,构建心理健康视听守护者!

心大陆多智能体

人工智能 AI 多模态 心理健康 数字心理

掌握 JMeter 插件管理器:提升性能测试的利器

霍格沃兹测试开发学社

JMeter 响应断言详解:提升测试精度的利器

霍格沃兹测试开发学社

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