从ABAP Netweaver的SICF到SAP Kyma的Lambda Function

本文涉及的产品
简介: ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点然后把业务逻辑写进去。

ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点然后把业务逻辑写进去。

clipboard1,1

采用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

clipboard2,2

Jerry觉得用SICF/Java Servlet进行开发,一个比较舒服的地方在于,应用开发人员不需要操心这些服务类实例何时创建和销毁等生命周期管理的问题,从而能专注于在预定义好的接口里编写业务逻辑代码,省心。

在企业级开发应用进入云原生开发时代之后,Serverless架构这个词也频繁出没于各大技术媒体里。

Serverless的字面意思容易给人以“不再需要服务器了”的误解,关于其准确定义,建议大家阅读Jerry非常尊敬的一位前辈,公众号“码农翻身”的一篇文章:我建议你了解一点儿Serverless,该文用非常浅显易懂的语言阐述了Serverless的含义以及从最早的局域网时代演进到Serverless架构的发展过程。

clipboard3,3

站在整个企业的角度上讲,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路由,监控和排错等功能。

clipboard4,4

借助Kubeless提供的命令行接口,我们可以在Kyma上创建和部署具备Serverless特性的Lambda Function.

kubeless命令行接口提供的CRUD操作:

clipboard5,5

当然也可以在Kyma提供的浏览器控制台里进行创建工作。

如下图所示,我创建了一个Hello World级别的Lambda Function,执行的逻辑是简单的把传入的字符串尾部加上一个后缀,函数基于nodejs8实现。

clipboard6,6

在Jerry之前的文章WordPress,SAP Kyma和微信三者的集成里创建的Lambda Function选择的触发方式是基于事件触发,这里我们试试HTTPS触发。

clipboard7,7

这个HTTPS-endpoint就是将来我们调用这个Lambda Function的url.

clipboard8,8

这个Lambda Function的认证由dex完成,一个基于openID的开源认证框架。

clipboard9,9

在Kyma提供的函数测试控制台里,发送一个请求,得到添加了后缀的字符串,简单易懂。

clipboard10,10

当我们创建了一个Lambda Function,背后发生了什么?虽然名称为Serverless,但是这些函数物理上总得运行于服务器上某种容器内,这种容器就是Kubernetes的pod,Jerry之前强调过,SAP Kubernetes基于Kubernetes,因此Kubernetes支持的命令,SAP Kyma也完全支持。

命令行查看刚刚创建的函数:

kubeless function list -n ctu-demo

clipboard11,11

使用命令行查看这个函数的明细:

kubectl describe function zjerry-lambda -n ctu-demo

Deployment和ReplicationSet:

clipboard12,12

水平自动伸缩的实现:

clipboard13,13

Lambda Function这个概念是SAP Kyma基于Kubernetes的Custom Resource Definitions(CRD)机制创建的一种自定义资源,而上图显示的这些函数属性都是Kubernetes里资源支持的原生属性。

在Kyma的控制台里能找到Lambda Function创建后,Kyma后台自动生成的对应资源:

clipboard14,14

Pod,即Lambda Function代码的运行环境:

clipboard15,15

同样的,使用kubectl describe pod命令可以查看这个pod的明细,找到里面包含的docker ID和docker镜像ID.

clipboard16,16

前面提到SAP Kyma的Lambda Function采取dex进行认证,如果想在编程语言里显式调用,需要提供相应的token.

在Kyma的控制台里拿到token,

clipboard17,17

传到Postman的Authorization头部字段里,得到期望的响应。

clipboard18,18

希望本文能让之前不了解Serverless的朋友们对SAP Kyma里基于Serverless架构的Lambda Function有一个基本的感性认识,感谢阅读。

更多阅读

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
17 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
11天前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
19 0
|
11天前
|
存储 安全 数据库
SAP ABAP 中数据类型 xstring 的使用介绍
SAP ABAP 中数据类型 xstring 的使用介绍
17 0
|
15天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
13 1
什么是 SAP ABAP 里的 Subscreen
|
15天前
|
数据库 存储 BI
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
10 0
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
|
15天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
8 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
15天前
|
数据库 SQL 应用服务中间件
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
17 0
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
|
15天前
|
SQL 数据库 数据处理
什么是 ABAP SQL Function
什么是 ABAP SQL Function
10 0
什么是 ABAP SQL Function
|
1月前
SAP ABAP ALV 的分组显示和 Subtotal 显示实现的技术步骤试读版
SAP ABAP ALV 的分组显示和 Subtotal 显示实现的技术步骤试读版
29 0
|
1月前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示试读版
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示试读版
15 0