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各色服务消费,在代码里也可以任意调用,十分方便。


  • 此外,BTP上不同的服务可以通过SAP Destination进行相互通信和依赖使用,举个例子,在SAP Process Automation中可以上传附件,这个功能就是要建立Destination连接到SAP BTP Document Management Service(前提是你得订阅了这个服务),这样就可以看到这个上传文件的控件了。像这种不同服务之间的相互调用还会越来越多,这也是我开头提到的BTP的初衷,它希望各个服务之间可以协同联系,而不是各自为战。

     


3. Customer Subaccount和Space

客户子账户是客户较大粒度的层级概念,有独立的用户角色分配,独立的计算资源,独立的服务分配,独立的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等等。。。

那Space又是什么? 请参照这张图。


 

可以看到Space是在Cloud Foundry环境下,Subaccount级别下的更细致的划分,简单理解就是Space下可以分配不同的用户成员,这些成员可以在自己所属的Space进行应用开发和部署。比如,我曾经作为SAP One Support Launchpad上搜索功能的负责人,那我的团队就会被分配到一个名字叫做search的Space里,我和我的团队成员不能访问search之外的Space,比如创建Incident,SAP系统信息等等其他开发组的Space。但是需要指出的是,SAP售卖的标准服务比如SAP集成套件,SAP流程自动化,就几乎不需要涉及Space级别的合作和使用了。


4. SAP云连接器

SAP云连接器并不是BTP的一部分,但是它是为了BTP服务的。简单说就是安装在你本地机器上的反向代理,因为BTP及其上服务是公网概念,通过云连接器可以方便安全快捷的进行资源暴露,这样就不用单独为每个BTP上的服务进行白名单处理或者暴露端口了,出了问题也可以通过云连接器查看日志记录(当然实际使用十分稳定,很少出问题)。所以请记住,SAP云连接器的一端一定是BTP,另一端可以是ERP系统,也可以是你本地开发的Java服务器等。如果是SAP S/4 HANA Cloud的用户,SAP在交付系统的时候也会一并把SAP云连接器的地址,用户名密码一并交付,不需要我们自行安装了。


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。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

工厂安全智能巡检机器人系统开发及其对您的价值体现

在工厂生产环境中,安全生产一直是业主、采购商以及中间商们十分关注的焦点。为了提升工厂生产线的安全性、效率和可追溯性,一款工厂安全智能巡检机器人系统应运而生,旨在为需求方带来全新的生产安全管理模式。 自动巡检增加效率 传统的工厂…

SD-WAN技术:优化国内外服务器访问的关键

在全球化的商业环境中,企业经常需要在国内访问国外的服务器。然而,由于地理位置和网络架构的限制,这种跨国访问往往会遇到速度慢、延迟高等问题。SD-WAN(软件定义广域网)技术的兴起,为企业提供了一种新的解…

大文件传输之udp如何传输大量数据

在数字化时代,对大文件传输的需求正以前所未有的速度增长。无论是个人用户还是企业,都急切寻求一种能够快速且稳定地处理大量数据的传输方法。UDP(用户数据报协议)以其无连接的特性和高效的数据传输能力,成为了大文件传…

C语言自定义数据类型(三)结构体指针

所谓结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么,这个指针变量就指向该结构体变量。 目录 一、指向结构体变量的指针 1.1举例说明 …

就业班 2401--2.26 Linux Day5--进程管理一

一、权限扩展 文件权限管理之: 隐藏权限防止root误删除 文件属性添加与查看 [rootlinux-server ~]# touch file1 file2 file3 1.查看文件属性 [rootlinux-server ~]# lsattr file1 file2 file3 ---------------- file1 ---------------- file2 ----------------…

【吴恩达·机器学习】第四章:详解神经网络:推理和训练

博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: Yaoyao2024每日一言🌼: 勇敢的人,不是不落泪的人,而是愿意含着泪继续奔跑的人。 ——《朗读者》 0、声明 本系列博客文章是博主本人根据吴…

RubyMine 2023:让Ruby编程变得更简单 mac/win版

JetBrains RubyMine 2023是一款专为Ruby开发者打造的强大集成开发环境(IDE)。这款工具集成了许多先进的功能,旨在提高Ruby编程的效率和生产力。 RubyMine 2023软件获取 RubyMine 2023的智能代码编辑器提供了丰富的代码补全和提示功能&#…

深度学习基础(三)循环神经网络(RNN)

之前的章节我们初步介绍了卷积神经网络(CNN): 深度学习基础(二)卷积神经网络(CNN)-CSDN博客文章浏览阅读2次。卷积神经网络(CNN)的应用领域广泛,尤其在图像处…

Delphi 报错 Type androidx.collection.ArraySet is defined multiple times

Delphi 11 建立一个新的 Multi-Device Application 编译成app的时候报错 报错信息 [PAClient Error] Error: E7688 Unable to execute "E:\Program\Java\jdk1.8.0_301\bin\java.exe" -cp "e:\program\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar"…

git push提交后GitHub没有统计我的Contributions

我在家里的电脑上创建了一个仓库,然后在笔记本上录取下来并进行提交合并等操作,但是发现笔记本上提交的记录并没有被github记录,就是那个绿色的点没有 就是提交完之后 没有出现当天的绿色的点 通过git log 后发现,提交记录中存在…

【pytorch】常用代码

文章目录 条件与概率torch.tensor()torch.rand()torch.randn()torch.randint()torch.multinominal() 逻辑运算torch.argmax()torch.max()torch.sum()torch.tanh()torch.pow() 功能性操作 torch.nn.functionalF.normalize()F.elu()F.relu()F.softmax() 张量计算torch.zeros()tor…

Yolov8有效涨点:YOLOv8-AM,添加多种注意力模块提高检测精度,含代码,超详细

前言 2023 年,Ultralytics 推出了最新版本的 YOLO 模型。注意力机制是提高模型性能最热门的方法之一。 本次介绍的是YOLOv8-AM,它将注意力机制融入到原始的YOLOv8架构中。具体来说,我们分别采用四个注意力模块:卷积块注意力模块…

《猎冰》难以狂飙,2024年开年剧集没有爆款

从2022年开始,剧集开年一爆成为惯例。 这很大程度取决于当时的环境。由于疫情原因,更多用户选择在家娱乐,剧集成为了家人、朋友相处间最好的娱乐消费品。 优秀的剧集,在多人共同的认可下得以快速传播。 也因为此,20…

幻兽帕鲁服务器多少钱?有买过的吗?

幻兽帕鲁服务器多少钱?太卷了,降价到24元1个月,阿里云4核16G10M游戏服务器26元1个月、149元半年,腾讯云4核16G游戏服务器32元、312元一年,华为云26元,京东云主机也是26元起。云服务器吧yunfuwuqiba.com给大…

【VSCode】SSH Remote 通过跳板机连开发机提示“bash行1 powershell未找到命令”

需求背景 因为需要,在家我需要挂上公司VPN然后SSH连到跳板机,然后再从跳板机SSH进开发机。 问题背景 跳板机进开发机输入完密码显示 bash行1 powershell未找到命令VSCode SSH Remote跳板机配置请自行搜素其他文章config配置 注意其中ssh.exe地址请根据…

Python空间数据计算:2.GeoPandas的几种安装方式

前言: 本文多图 如果不想挑战自己的计算机设置能力,请看最后的方法即可 推荐收藏。 上次秀了一把GeoPandas包之后,后台最多的留言就是:这个破包也太难安装了……各种装不上。好吧,我承认,GeoPandas是Py…

进程与线程之线程

首先exec函数族是进程中的常用函数,可以利用另外的进程空间执行不同的程序,在之前的fork创建子进程中会完全复制代码数据段等,而exec函数族则可以实现子进程实现不同的代码 int execl(const char *path, const char *arg, ... …

SpringMVC 学习(六)之视图

目录 1 SpringMVC 视图介绍 2 JSP 视图 3 Thymeleaf 视图 4 FreeMarker 视图 5 XSLT 视图 6 请求转发与重定向 6.1 请求转发 (Forward) 6.2 重定向 (Redirect) 7 视图控制器 (view-controller) 1 SpringMVC 视图介绍 在 SpringMVC 框架中,视图可以是一个 J…

LeetCode69. x 的平方根(C++)

LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…

Spark之【基础介绍】

Spark最初是由美国伯克利大学AMP实验室在2009年开发&#xff0c;Spark时基于内存计算的大数据并行计算框架&#xff0c;可以用于构建大型的、低延迟的数据分析应用程序。 Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一。 Spark的特点 运行速度快 &am…