写点什么

如何为 SAP 应用选择合适的 EC2

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

    阅读完需:约 6 分钟

如何为SAP应用选择合适的EC2

需求背景

我们在前两篇文章中分别分享了如何为迁移上云的服务器选择机型以及如何在每年对云上的服务器进行优化。在这篇文章中,我们要讨论一下 SAP 的服务器问题。SAP 是企业中广泛使用的 ERP 系统,SAP 应用系统的上云也已经是大势所趋,相对于其他应用系统来说,SAP 的机型选择要相对苛刻一写。首先,不是所有的 AWS EC2 机型都通过了 SAP 公司的认证;其次,就是通过了认证的机器,也不是能运行所有的 SAP 应用。SAP 公司为不同的应用认证了不同的机型。例如 m4 系列的服务器是 SAP 认证的机型,但它不是 HANA 数据库认证的机型。SAP 服务器的性能是通过 SAPS 值体现的,如果我对运行 SAP 应用的服务器进行了机型优化,我如何才能知道对 SAPS 值有何影响?

方案概述

我们在第一篇文章中介绍了环境变量 EXCLUDE_EC2_TYPE 的作用,所以在进行 SAP 服务器的选型时,我们可以通过设置 EXCLUDE_EC2_TYPE 的值来规避选择非 SAP 认证的服务器的现象发生,在这两个网站上可以查询 SAP 的何种应用认证了何种类型的 EC2:



好了,设置了 EXCLUDE_EC2_TYPE 后,我们就可以按照第二篇文章中阐述的方法对 SAP 机型进行优化了。优化完成后,怎么对比 SAPS 值呢? 我们的方案是首先从网站上抓取不同 EC2 对应的 SAPS 值,然后下载下来生成一个 Excel 表格以备后用。


Python 程序 get_ec2_saps.py 就可以完成这个工作:


第一步:下载网上的相关表格


import pandas as pd
saps_table = pd.read_html(‘https://aws.amazon.com/cn/sap/instance-types/’)
import pandas as pd
saps_table = pd.read_html('https://aws.amazon.com/cn/sap/instance-types/')
复制代码


第二步:对表格进行合并、清理


new_table = saps_table[0]
old_table = saps_table[1]
new = new_table[['Instance Type', 'vCPU', 'Mem (GiB)', 'SAPS']]
old = old_table[['Instance Type', 'vCPU', 'Mem (GiB)', 'SAPS']]
ec2_saps = pd.concat([new, old])
ec2_saps.replace({'\*': ''}, regex=True, inplace=True)
ec2_saps['vCPU'] = pd.to_numeric(
ec2_saps['vCPU'], downcast='integer', errors='coerce')
ec2_saps['Mem (GiB)'] = pd.to_numeric(
ec2_saps['Mem (GiB)'], downcast='float', errors='coerce')
ec2_saps['SAPS'] = pd.to_numeric(
ec2_saps['SAPS'], downcast='float', errors='coerce')
复制代码


第三步:保存到 Excel 表格里面


ec2_saps.to_excel('ec2_saps.xlsx', index=False) 
复制代码


大功告成了,让我们看看结果,由于机型过多,我们仅截取部分内容:



接下来我们要做的就是将我们得到的 SAPS 值的结果拼接到机型优化的结果中去。我们以第二篇文章中的优化结果作为例子,输入文件的格式如下:



Python 程序 add_saps.py 可以完成结果的拼接工作:


import pandas as pd
source = "blog3_output.xlsx"
sheet = 0
target = pd.ExcelWriter('result.xlsx')
for i in range(1, 6):
sheet = i
ex1 = pd.read_excel(source)
ex2 = pd.read_excel("ec2_saps.xlsx")
merge = ex1.merge(ex2, left_on="type",
right_on="Instance Type", how='left')
merge.drop(['Instance Type', 'vCPU', 'Mem (GiB)'], axis=1, inplace=True)
merge.rename(columns={'SAPS': 'source_saps'}, inplace=True)
merge = merge.merge(ex2, left_on="target_type",
right_on="Instance Type", how='left')
merge.drop(['Instance Type', 'vCPU', 'Mem (GiB)'], axis=1, inplace=True)
merge.rename(columns={'SAPS': 'target_saps'}, inplace=True)

merge.to_excel(target, sheet_name=str(sheet), index=False)
target.save()
复制代码


运行前提条件:ec2_saps.xlsx 和 blog3_output.xlsx 保存在当前目录下。


运行结果:



注意上面表格的后两列,已经标注了源和目地系统的 SAPS 值。


本文中的完整程序可从这里下载:


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-does-sap-choose-suitable-ec2-seriesfour/


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

发布了 1900 篇内容, 共 144.2 次阅读, 收获喜欢 81 次。

关注

评论

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

使用nodejs和Java访问远程服务器的服务

汪子熙

Java nodejs 28天写作 abap 11月日更

一文带你读懂数字管家

HarmonyOS开发者

HarmonyOS OpenHarmony

你该不会拿 CSAPP 垫显示器吧

Zilliz

【Pandas学习笔记02】-数据处理高阶用法

恒生LIGHT云社区

Python 数据分析 pandas 数据可视化

大厂算法面试之leetcode精讲13.单调栈

全栈潇晨

LeetCode 算法面试

【Flutter 专题】01 图解 Windows 环境下安装配置环境

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 12月日更

在 Flutter 中如何使用TabBar和TabBarView创建选项卡布局【Flutter 专题 13】

坚果

flutter 28天写作 签约计划第二季 12月日更

【架构实战营】模块五

衣谷

架构实战营

面试官:Java 线程如何启动的?

华为云开发者联盟

Java 线程 JVM 时序图 Java 线程

react源码解析7.Fiber架构

buchila11

React React Hooks React Diff

技术管理哲学随笔:面对大量事业部需求与产研团队资源之间的矛盾

dclar

团队管理 管理 CTO

Git进阶(一):git 管理文件之后文件颜色的含义

No Silver Bullet

git 学习 git revert 12月日更

2021年马上要结束了,这5款Java框架你都了解吗

@零度

Java spring

尚硅谷Vue大型电商项目:尚品汇教程发布!

@零度

Vue 大前端

AI 收藏夹 Vol.003:AI 能听懂阴阳怪气吗?

Zilliz

神经网络 AI 计算机视觉

模块5-课后作业

21°Char

[Pulsar] 按照KeyHashRange读取消息

Zike Yang

Apache Pulsar 11月日更

移动支付与支付安全SDL

明亮安全观

网络安全 信息安全 数据安全 支付安全 交易安全

【LeetCode】 连续字符Java题解

Albert

算法 LeetCode 12月日更

在线文本字符串批量替换工具

入门小站

工具

.NET 中缓存的实现

喵叔

11月日更

业务请求量膨胀的扩容技术实践

博文视点Broadview

技术驱动未来,保险极客凭借数字团险领跑

科技热闻

你知道什么时候用Vue计算属性吗?

华为云开发者联盟

Vue 字符串 逻辑 模板 计算属性

老铁久等了,尚硅谷Vue大型电商项目:尚品汇教程发布!

编程江湖

Vue 大前端

大湾区|Serverless 线下活动两连发

阿里巴巴云原生

阿里云 Serverless 云原生 线下活动 大湾区

大厂算法面试之leetcode精讲14.排序算法

全栈潇晨

LeetCode 算法面试

Java难吗?Java基础知识最强总结(2021版)

XiaoLin_Java

Java

react源码解析8.render阶段

buchila11

React React Hooks

使用HTML,CSS 和 JS 创建 Chrome 扩展程序

海拥(haiyong.site)

json chrome扩展 28天写作 签约计划第二季 12月日更

大数据开发开源平台之Spark SQL的基础

@零度

大数据 spark SQL

如何为SAP应用选择合适的EC2_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章