SAP Business Technology Platform (BTP)的架构理解

查资料看到的,转一下,附上链接:

SAP Business Technology Platform (BTP)的架构理解

长期以来,我在与客户和伙伴的沟通交流中发现大家依然对SAP业务技术平台 – SAP Business Technology Platform (以下简称BTP)纯有各种疑惑,借此机会借助我原来作为SAP内部IT开发的经验和近期一年来在客户前线的经验,简要聊一下我对BTP的架构理解,希望能对读者有所帮助。

一些简单的历史

BTP原来叫SCP – SAP Cloud Platform,甚至更早叫做SAP HANA Cloud Platform,所以从名字的变更中可以发现,SAP的初衷是将其从单纯的内存数据库业务变更到融合各种技术栈的云平台服务,但是SAP并不是一个纯技术公司,其精华在于依托各种生产实际中的业务流程,数据流转和计划预算等,所以最终将名称定为“业务技术平台”,意思就是说首先这是个平台,其次是这个平台上有各种技术,这些技术用以服务企业业务。

最开始的时候SAP自己提供基础算力,所以可以经常听到BTP的历史版本叫做NEO,用以区分现行底层依赖第三方合作伙伴如Azure,AWS,GCP和阿里云的最新版本Cloud Foudry(简称CF),这都在一定程度上体现了在数字云时代的快速变更对SAP的管理运营决策的影响。

迄今为止,BTP已经形成了十份稳定的运营和扩展架构,对于SAP的云转型起到十分重要的前沿阵地和粘合剂作用。其本身作为平台对企业并没有直接价值,而是上边的90多个云服务才是企业花钱订阅和日常使用的精华所在。这里需要指出的是,中国大陆由于种种原因,这90多个服务目前还并不能全部使用,所以有些客户和合作伙伴可能简单的认为BTP=CPI,是因为仅仅订阅了其中一个服务即SAP集成套件。具体有哪些服务可以使用,可以参考SAP Discovery Center,该网站非常清楚地对这90多个服务分类成几大类:应用开发和自动化,数据和分析,集成,基础服务等,点击每一个磁贴都可以看到每个服务的详细信息。

架构解读

上边提到BTP作为平台本身并没有直接价值,那么为什么还需要这个平台呢?我们试想如果不这样做的话,会出现以下这些结果:

  1. 这些90多个服务每次从开发到使用都各自独立为战,不仅对SAP开发流程和速度都是极大浪费,另外还对客户的使用造成很大负担,因为很可能每个服务都有自己的激活方法和使用环境,对于用户体验可以说是十分糟糕的体验。
  2. 在解决方案的分类上会让SAP的产品十分分散,无法让客户形成分门别类的统一认知比如那一类服务是用来解决数据问题,哪一类是用来解决流程问题,哪一类是用来解决开发问题等。
  3. 在底层角色权限认证,到ERP系统的连接共享等都要各自独立开发,这些服务之间也很难直接通信,每次开发新的服务都要从头做起,无法利用现有资源。

而BTP的架构就是用以解决上述问题。

如果是第一次接触BTP,大概率是从邮件中拿账号和激活密码然后登陆BTP的主控室(cockpit)开始,说的直白点就是总的操作台,点击左侧这些菜单按钮,会在右侧展示详情,看起来十分简单对吧?

但是实际上后边有很多让初学者迷惑的概念,比如什么是Entitlement(官方中文翻译叫做”权利”,意思就是说我作为客户有哪些服务购买了或者免费使用),如何添加新的用户Role,如何配置到S4本地系统的连接,为什么存在全局账户,子账户,甚至子账户下边还有空间(Space)账户?诸如此类问题,很容易迷失在各种手册和配置中无法自拔,那么下面我就试着从全局层面解释下为什么会有这些设计。

首先看这张图,这是我基于自己的理解绘制的一张简单架构图,我们按照顺序解释。

1. Identity Authentication Tenant

这是个免费服务,如果没有的话可以通过开SAP Ticket申请,有时候也经常简称为IAS – Identity Authentication Service。该服务严格意义上并不属于BTP上的服务,而是SAP为了自家的云产品能更好的互联,单独开发的一个进行身份认证的服务。你可以将常见的微软认证数据接入IAS,利用现有用户数据和权限,实现SAP云产品的无缝登陆,你也可以在上边进行从0到1的用户创建填充,重度依赖IAS实现SAP云产品的用户管理。

但是对于很多中国大陆的客户来说,由于他们只订阅了其中一个服务比如SAP集成套件,并没有其他SAP解决方案比如SAP人力资源或者采购报销等云产品,往往直接忽略这一部分,而使用BTP自带的default默认SAP IAS来增减管理用户,这相当于用户数据是在SAP这边而不是在用户自创建的IAS Tenant上。当然,这里需要指出的是,由于中国大陆的特殊性,数据并不是保留在SAP而是保留在SAP在中国大陆的运营代理公司中,而这也是很多客户在注册以及增加其他BTP用户的时候发现会在这种地址,https://awmtxn6rh.accounts.sapcloud.cn/,这个地址就是BTP在中国大陆的统一IAS默认地址。

从上边的架构图中可以看到,IAS在用户通过浏览器登陆BTP上的服务的时候起到非常关键的鉴权作用,只有该用户有足够权限才能访问BTP上的指定服务,要么在BTP上进行开发工作,要么本身就是终端用户使用BTP上暴露的服务。结合方法也不困难,SAP社区论坛有不少资料,其最直接的反应就是在上边BTP主控室的截图左侧可以看到Trust Configuration中多了一个自创建的IAS而不仅仅是default的了。

IAS创建以后是个独立地址,打开以后长这样,上边有各色贴心登陆功能可以探索。

2. Connectivity & Destination

这是BTP上非常重要的组成部份,要理解BTP的架构就一定要知道这个东西,说白了就是个代理,很多服务都要通过该组件进行互联互通。如果你对BTP上的各种服务创建和使用比较熟悉的话,就会感受BTP产品团队的设计理念,就是我只需要在BTP维护这些连接信息,然后各种服务都可以再次复用它们,只要在服务中指定一下就行了,比如在SAP Build Apps里就可以引入对应的连接信息,一次性获取后台系统的各个OData Service。

  • 可以看到架构右边是本地onpremise在防火墙后的系统,就要通过SAP云连接器(下边会说)和BTP建立Connection,之后在BTP上的各色服务就可以通过该connection暴露出来的虚拟地址进行数据互通。可以看到下图我已经将BTP连接到两个ABAP系统。

  • 开发过程中,如果是外部地址,往往会存在跨域访问的限制问题,这时候就要在BTP上通过Destination建立代理,写入外部地址的用户名密码信息等才可以在BTP上开发的应用中进行无缝访问,这样还保证了机要信息存储于Destination中而不是在代码里。如下图就是连往S4系统的一个destination,可以直接在BTP各色服务消费,在代码里也可以任意调用,十分方便。

3. Customer Subaccount

客户子账户是客户较大粒度的层级概念,有独立的用户角色分配,独立的计算资源,独立的服务分配,独立的connectivity和destination等,可以说绝大多数服务都存在于客户的某个子账户中。比如你买了2个SAP集成套件的tenant,那么只能将其分配于两个子账户中。但是我们这里主要谈论的还是BTP上的各色服务。

前边讲过通过discovery center可以看到BTP上的服务大致分成了几类,应用开发和自动化,数据和分析,集成,基础服务(公用服务)。其核心思想就是朝着低代码无代码方向进行,我在其上的架构图中拿出了几个非常有代表性也用的比较多的服务。如SAP集成套件就是一种无代码方式进行API的操纵工具,SAP的流程自动化也是通过无代码的方式进行机器人开发和审批流管理,SAP的Build Apps更是当下非常火热的无代码应用开发,可以开发跨平台的端到端应用程序,SAP的Build WorkZone可以用无代码的方法开发企业门户,还有SAP分析云也是可以通过低代码方式进行BI报表开发和分析。当然,传统的专业代码开发工具也依然活跃,比如Business Application Studio和Cloud Foundry运行时环境,由于BTP是基于开源平台,所以在其上部署运行Java,Javascript,Python等各色程序,SAP也有自己开发的后端开发框架如SAP CAP可以较为方便的结合SAP的技术栈和外部开源世界。

除此之外,还有不少零散的服务,比如Feature Toggle可以进行应用程序开关管理,Document Management Service可以进行文档管理,Event Mesh是事件队列服务,Task Center是把各种审批和通知服务融合在一起的服务,Mobile Service可以开发IOS或者Android等等。。。

4. SAP云连接器

简单说就是安装在你本地机器上的反向代理,因为BTP及其上服务是公网概念,通过云连接器可以方便安全快捷的进行资源暴露,这样就不用单独为每个BTP上的服务进行白名单处理或者暴露端口了,出了问题也可以通过云连接器查看日志记录(当然实际使用十分稳定,很少出问题)。所以请记住,SAP云连接器的一端一定是BTP,另一端可以是ERP系统,也可以是你本地开发的Java服务器等。

5. BTP运行时环境

SAP BTP本身作为平台,是基于开源的PAAS Cloud Foundry(就开头提到的CF)建立起来的,所以CF上可以使用的特性比如命令行登陆,管控服务,角色权限,部署Java Python应用程序等等,都可以无缝在BTP上使用,除此之外,很多BTP的服务比如像SAP集成套件,都需要CF作为底层运行环境,这就是为什么这些服务在自助开通的时候,需要强行开启CF环境,作为运行时的“容器”。但是对于使用者来说,除非是做应用开发,部署和运维,否则是不需要关心这些底层的运行环境的,甚至都接触不到命令行,比如SAP集成套件的客户,可能集成套件都已经使用了两三年了,还从来不知道SAP BTP底层有所谓的CF运行时环境。

但是对于SAP BTP上的应用开发,部署和运维,这个概念就要一定知道并且熟练掌握,CF上的环境可以支持常见现代高级语言环境比如Java,Python等,SAP为了支持自家的ABAP语言,也在后期加入了ABAP运行时环境,这样客户不依赖SAP GUI就可以进行ABAP开发了。以及,为了支持更为自由灵活的K8S开发,SAP还提供了Kyma运行时环境,这样客户就可以更大程度的深入底层进行开发和部署了。如果感兴趣的可以在SAP的community直接搜索比如Kyma上如何构建UI5程序进一步了解。

所以一句话概括,目前SAP BTP的运行时环境包括Cloud Foundry(CF),ABAP和Kyma。

总结

以上是本人对BTP的一些认知,由于时间有限也许遗漏一些,会在后续不停更新,也欢迎各位指正,沟通交流,共同创建BTP共享社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12111.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web 攻防之业务安全:密码找回流程绕过测试.(利用链接跳到后面去)

Web 攻防之业务安全:密码找回流程绕过测试 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所…

13.vue-cli

单页面应用程序:所有的功能只在index.html中完成 vue-cli是vue版的webpack 目录 1 安装vue-cli 2 创建项目 3 使用预设 4 删除预设 5 开启项目 6 项目文件内容 6.1 node_moduls 中是项目依赖的库 6.2 public 6.2.1 favicon.ico 是浏览器页签内部…

Android屏幕适配dp、px两套解决办法

最新最全文章(2018-08-25):Android dp方式的屏幕适配-原理(后期补充完整讲解)_手机dp输出是横屏还是竖屏_android阿杜的博客-CSDN博客 “又是屏幕适配,这类文章网上不是很多了吗?” 我也很遗憾,确实又是老问题。但本文重点对网上…

MYSQL学习 - DDL数据库操作

前言 从今天开始, 健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 ------------------------------前戏已做完,精彩即开始---…

基于springboot和ajax的简单项目 06 日志界面的delete功能(根据选择的checkbox)

01.这次后台开始&#xff1b; 顺序依次是dao->xml->service->serviceimpl->controller->html 02.dao接口 public int doDeleteObjects(Param("ids") Integer... ids);03.xml文件 <update id"doDeleteObjects" >delete from sys_lo…

用友U8 cloud,信创云ERP的数智先锋

编辑&#xff1a;阿冒设计&#xff1a;沐由从来未曾有过一个春天&#xff0c;能够像当下这般被如此由衷地期待。经历了漫长的1000多个日日夜夜之后&#xff0c;我们的工作与生活终于回到正轨。自2023年以来&#xff0c;中国市场迎来“开门红”&#xff0c;消费市场加速回暖&…

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题

颜色平衡树问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序问题描述 格式输入 输入的第一行包含一个整数 n &#xff0c;表示树的结点数。 接下来 n 行&#xff0c;每行包含两个整数 Ci , Fi&#xff0c;用一个空格分隔&#xff0c;表示第 i 个结点 …

新能源汽车高压配电管理(PDU/BDU)

一、概念与组成 PDU(Power Distribution Unit)&#xff0c;即高压配电单元&#xff0c;功能是负责新能源车高压系统中的电源分配与管理&#xff0c;为整车提供充放电控制、高压部件上电控制、电路过载短路保护、高压采样、低压控制等功能&#xff0c;保护和监控高压系统的运行…

智慧井盖-物联网智能井盖系统-管网数字化监测,守护城市生命线

平升电子智慧井盖-物联网智能井盖系统-管网数字化监测,守护城市生命线实现对井下设备和井盖状态的监测及预警&#xff0c;是各类智慧管网管理系统中不可或缺的重要设备&#xff0c;解决了井下监测环境潮湿易水淹、电力供应困难、通讯不畅等难题&#xff0c; 适合安装于城市主干…

【MySQL--05】表的约束

文章目录 1.表的约束1.1空属性1.2默认值default vs null1.3列描述1.4 zerofill1.5主键primary key1.6 自增长auto_increment1.7唯一键 unique如何设计主键&#xff1f;1.8 外键 foreign key 1.表的约束 真正的约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xf…

基于springboot和ajax的简单项目 02.一直会出现的页面的上一页,下一页,分页与总页数 (下)

在各种功能中会一直出现页面分页的问题。 对此&#xff0c;可以使用pojo对象&#xff0c;来一直管理页面分页的功能。 01.创建相关的pojo对象。 由于属性是来辅助sql语句的&#xff0c;这个pojo对象。 Setter Getter ToString NoArgsConstructorpublic class PageObject<T&…

day11_面向对象

今日内容 零、 复习昨日 一、作业 二、局部变量&成员变量 三、this关键字 四、构造方法 五、重载 零、 复习昨日 晨考 public class Phone {// 成员属性/成员变量// 数据类型 变量名;double price;String brand;// 成员方法public void call(String num) {System.out.print…

流程引擎基础知识

流程引擎基础知识 流程部署流程取消部署流程发起流程取回流程作废流程委托流程流转常用流程表介绍备注 流程部署 1.后台直接导入bpmn /**流程部署源代码*/public void deploy() {ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService re…

UML与代码的对应关系

五种关系的耦合强弱比较&#xff1a;依赖<关联<聚合<组合<继承 依赖 虚线箭头 可描述为&#xff1a;Uses a 依赖是类的五种关系中耦合最小的一种关系。 因为在生成代码的时候&#xff0c;这两个关系类都不会增加属性。 注意1&#xff1a; Water类的生命期&…

1676_MIT 6.828 xv6中的CPU alarm_资料翻译整理

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光&#xff0c;看起来MIT的课程的确是很有饱满度。 这里&#xff0c;再整理一份课程中的作业要求。 …

JavaWeb03 Cookie和Session

一个网站怎么证明你来过&#xff1f; 1.首次访问时服务器给客户端一个cookie&#xff0c;下次客户端再次访问会自动携带cookie&#xff0c;注意cookie可以是多个 2.首次访问时服务器登记了客户端一系列信息&#xff0c;下次客户端再进行访问时服务器自动匹配此客户端是否访问…

【架构设计】如何设计一个几十万在线用户弹幕系统

文章目录 一、前言二、项目介绍客户端轮询WebSocket主动推送 三、弹幕初始架构四、弹幕架构演进五、弹幕存储六、弹幕查询七、总结 一、前言 现在无论是直播还是电视剧&#xff0c;我们都可以看到上面慢慢的弹幕&#xff0c;满足十几万用户在线的弹幕系统&#xff0c;我们该如…

vue3插槽的使用

插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。 1.插槽基本使用 子组件SlotComponent.vue <template><div cla…

逐一解释一下四个 “内存屏障” 是什么

什么是内存屏障&#xff1f;硬件层⾯&#xff0c;内存屏障分两种&#xff1a;读屏障&#xff08;Load Barrier&#xff09;和写屏障&#xff08;Store Barrier&#xff09;。内存屏障有两个作⽤&#xff1a; 阻⽌屏障两侧的指令重排序&#xff1b;强制把写缓冲区/⾼速缓存中的…

【软考备战·希赛网每日一练】2023年4月18日

文章目录 一、今日成绩二、错题总结第一题第二题第三题 三、知识查缺 题目及解析来源&#xff1a;2023年04月18日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; MTTF&#xff1a;平均无故障时间 MTTR&#xff1a;平均故障修复时间 可用性/可靠性MTTF…