ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点然后把业务逻辑写进去。
采用SICF服务的方式暴露ABAP Netweaver上的资源,比选择OData或者Web Service的工作量要小很多,比较适合Jerry负责的一些开发周期短,需要迅速出成果的原型开发,比如Jerry之前做的 打通C/4HANA和S/4HANA的一个原型开发:智能服务创新案例,S/4HANA里的资源暴露就采取的SICF来实现的。
Netweaver作为一个Web服务器,SAP把在SICF里实现的这些服务类定位成Web服务器的扩展,地位如同Java Web服务器里的Servlet,Jerry之前也写过一篇博客对二者进行了比较:
ABAP ICF handler and Java Servlet
Jerry觉得用SICF/Java Servlet进行开发,一个比较舒服的地方在于,应用开发人员不需要操心这些服务类实例何时创建和销毁等生命周期管理的问题,从而能专注于在预定义好的接口里编写业务逻辑代码,省心。
在企业级开发应用进入云原生开发时代之后,Serverless架构这个词也频繁出没于各大技术媒体里。
Serverless的字面意思容易给人以“不再需要服务器了”的误解,关于其准确定义,建议大家阅读Jerry非常尊敬的一位前辈,公众号“码农翻身”的一篇文章:我建议你了解一点儿Serverless,该文用非常浅显易懂的语言阐述了Serverless的含义以及从最早的局域网时代演进到Serverless架构的发展过程。
站在整个企业的角度上讲,ABAP Netweaver的SICF开发模式,和Serverless架构几乎没有任何联系,两者区别很大:一个是需要在部署于企业本地的服务器上编写函数代码,另一个则是直接在云服务提供商提供的平台上编写代码。然而,从只需要专心搬砖的程序员个体视角出发,两者也有一些相似之处:程序员都不需要关注自己编写的代码在服务器端如何存储, 也不用操心这些函数在何时被调用。
当然,技术总是在向前发展的,运行在现代云服务提供商基于Serverless架构平台之上的函数,和运行在ABAP Netweaver服务器上的SICF服务相比,就像一个含着金钥匙出生的富二代,天生就具备云原生应用的一些基本特质,比如高可用性,弹性伸缩,按需装载,动态计费等等。
SAP近些年来在云原生开发领域进行了巨大的持续投入,自然少不了基于Serverless架构的解决方案,比如本文标题提到的SAP Kyma上的Lambda Function.
在Jerry之前的文章WordPress,SAP Kyma和微信三者的集成 里,曾经介绍了如何在SAP Kyma上编写Lambda Function,用于响应WordPress投递给Kyma的事件,并且在Lambda Function里调用微信API,向指定的微信用户推送消息。在前一篇文章里,如那篇文章标题所示,Jerry聚焦的是WordPress,SAP Kyma和微信三者的互动,而本文咱们来专门聊聊SAP Kyma里的Lambda Function.
SAP Kyma Serverless的实现基于Kubeless,一个Kubernetes原生支持的Serverless框架,实现了运行于Kubernetes之上资源的自动伸缩,API路由,监控和排错等功能。
借助Kubeless提供的命令行接口,我们可以在Kyma上创建和部署具备Serverless特性的Lambda Function.
kubeless命令行接口提供的CRUD操作:
当然也可以在Kyma提供的浏览器控制台里进行创建工作。
如下图所示,我创建了一个Hello World级别的Lambda Function,执行的逻辑是简单的把传入的字符串尾部加上一个后缀,函数基于nodejs8实现。
在Jerry之前的文章WordPress,SAP Kyma和微信三者的集成里创建的Lambda Function选择的触发方式是基于事件触发,这里我们试试HTTPS触发。
这个HTTPS-endpoint就是将来我们调用这个Lambda Function的url.
这个Lambda Function的认证由dex完成,一个基于openID的开源认证框架。
在Kyma提供的函数测试控制台里,发送一个请求,得到添加了后缀的字符串,简单易懂。
当我们创建了一个Lambda Function,背后发生了什么?虽然名称为Serverless,但是这些函数物理上总得运行于服务器上某种容器内,这种容器就是Kubernetes的pod,Jerry之前强调过,SAP Kubernetes基于Kubernetes,因此Kubernetes支持的命令,SAP Kyma也完全支持。
命令行查看刚刚创建的函数:
kubeless function list -n ctu-demo
使用命令行查看这个函数的明细:
kubectl describe function zjerry-lambda -n ctu-demo
Deployment和ReplicationSet:
水平自动伸缩的实现:
Lambda Function这个概念是SAP Kyma基于Kubernetes的Custom Resource Definitions(CRD)机制创建的一种自定义资源,而上图显示的这些函数属性都是Kubernetes里资源支持的原生属性。
在Kyma的控制台里能找到Lambda Function创建后,Kyma后台自动生成的对应资源:
Pod,即Lambda Function代码的运行环境:
同样的,使用kubectl describe pod命令可以查看这个pod的明细,找到里面包含的docker ID和docker镜像ID.
前面提到SAP Kyma的Lambda Function采取dex进行认证,如果想在编程语言里显式调用,需要提供相应的token.
在Kyma的控制台里拿到token,
传到Postman的Authorization头部字段里,得到期望的响应。
希望本文能让之前不了解Serverless的朋友们对SAP Kyma里基于Serverless架构的Lambda Function有一个基本的感性认识,感谢阅读。
相关推荐
"高清自学版 SAP+ABAP开发从入门到精通"表明了该资料可能包含视频教程,这对于视觉学习者来说是非常有价值的资源。通过观看实际操作,可以更好地理解和掌握编程技巧。同时,"SAP开发自学必读"提示我们,这些资料可能...
ABAP NetWeaver 2004s SPS8 是一个重要的 SAP 平台版本,其核心功能之一是支持 Web Dynpro 技术,这是一种用于构建用户友好型 Web 应用程序的框架。本篇文章将深入探讨 ABAP NetWeaver 2004s SPS8 版本中的 Web ...
本教程集合了超过1500页的详细内容,涵盖了从基础到高级的ABAP知识,同时结合SAP的标准教程,为学习者提供了一个全面深入的学习资源。 在ABAP教程中,你可以期待学习到以下核心知识点: 1. ABAP语法基础:包括变量...
2. **执行SQL查询**:使用SELECT语句从数据库获取数据,并将其存储到之前创建的数据结构中。例如: ```abap SELECT matnr desc quant INTO TABLE @lt_data FROM mseg. ``` 3. **初始化ALV**:使用`cl_salv_...
SAP Remote Function Call (RFC) 是一个接口技术,它允许外部系统(如.NET应用程序)调用SAP系统中的函数模块,执行业务逻辑或获取数据。下面我们将深入探讨这个API的工作原理、使用场景以及相关的开发要点。 首先...
资源名称:sap abap开发从入门到精通 内容简介: 《SAP ABAP开发从入门到精通》以应用实例的形式,讲解了SAPABAP开发的相关知识点,详细介绍了SAPABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库...
SAP NetWeaver作为ABAP开发的平台,提供了开发、测试和部署ABAP应用程序的环境。开发者通常使用SAP Development Workbench(简称SE80)进行代码编写和调试。 在SAP开发中,ABAP的应用场景广泛,包括: 1. 业务逻辑...
在SAP ABAP环境中,通用接口日志和RESTful动态调用FM是两个重要的概念,它们在企业级应用开发中发挥着关键作用。本文将详细阐述这两个知识点,并结合RESTful服务,探讨它们如何协同工作。 首先,让我们了解SAP ABAP...
《SAP ABAP开发从入门到精通》以应用实例的形式,讲解了SAP ABAP开发的相关知识点,详细介绍了SAP ABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库、模块化程序、内表、调试、ABAP数据字典、锁对象...
ABAP-ALV进阶是指在SAP系统中使用ABAP语言开发的高级列表查看器(ALV)。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ALV 全称为 ABAP List Viewer...
SAP ABAP 开发环境和开发工具介绍 SAP ABAP 开发环境和开发工具是 SAP 系统中最重要的组件之一,它提供了一个强大的开发平台,允许开发者创建、测试和部署 ABAP 程序。ABAP 是 SAP 系统中的主要编程语言,用于开发...
SAP ABAP 代码备份下载到本地程序代码
database for data marts, which supplements SAP NetWeaver Business Warehouse and the SAP Business Suite, to all types of data warehouse applications and a platform for analytical and transactional ...
SAP ABAP(Advanced Business Application Programming)是SAP公司推出的一种高级业务应用编程语言,用于开发在SAP R/3和SAP NetWeaver平台上的应用程序。这些电子书提供了全面的资源,帮助学习者深入理解并掌握SAP ...
SAP ABAP开发快捷键 SAP ABAP开发是一种功能强大且灵活的编程语言,用于开发SAP系统中的业务逻辑。然而,在ABAP开发过程中,效率是一个非常重要的因素。为了提高开发效率,熟悉ABAP开发快捷键是非常必要的。在本文...
本书《实战SAP程序开发——从实例学SAP ABAP编程》的前12章,深入浅出地介绍了SAP ABAP的基础知识和实战技巧。以下是根据章节标题和内容概要提取的相关知识点: 1. **第二章 创建HELLO WORLD程序**: - ABAP编程...
当ABAP程序需要操作数据时,必须先调用相应的加锁函数模块(Function Module, FM),这样即使直接操作数据库,也会受到SAP锁机制的约束。 锁的管理由SAP的锁服务器(Lock Server)负责,尤其在分布式多实例系统中,...
5. **OO ABAP**:随着SAP NetWeaver的推出,ABAP引入了面向对象编程的概念,如类、对象、继承和多态性,使得代码更易于维护和扩展。 6. **数据库交互**:ABAP提供了一系列数据库通信的语句,如`SELECT`、`INSERT`、...
简单来讲,SAPLINK就是用来导入和导出ABAP程序,等开发对象的一个开源分享项目的产物. 1.上载前置工具程序 导入SAPLINK需要使用ZSAPLINK_INSTALLER程序进行导入. TCode:SE38,新建名为ZSAPLINK_INSTALLER的程序. 2....