乐趣区

关于sap:基于-Kyma-的企业级云原生应用的扩展案例分享

什么是 Kyma?其官网的定义是,Kyma 是一个开源的云原生利用开发平台和运行时,底层基于 Kubernetes,借助一系列包含 Istio, NATS, Serverless 和 Prometheus 在内的其余优良开源我的项目和组件,可能开发、运行和操作云原生应用程序,反对对传统的 On-Premises(本地部署)应用程序和云原生利用基于事件驱动模式的松耦合扩大。

本文分为两局部,别离给大家介绍应用 Kyma 对本地部署的传统利用和企业级云原生利用进行扩大的案例。

应用 Kyma 扩大本地部署的 WordPress 利用

WordPress 是一个基于 PHP 的开源内容管理系统,很多敌人喜爱应用 WordPress 搭建本人的集体博客网站。

构想这样一个场景:某程序员是一个社交媒体达人,喜爱将本人的见闻经验,同步到 Twitter,Facebook,Youtube,微信等多个社交媒体上。手动登录一个个媒体平台而后逐个更新状态,无疑是一件费时费力的事件。

还好咱们是程序员,能够充分发挥本人的入手能力。

假如咱们本人的 WordPress 网站能够同 Kyma 连贯,每当 WordPress 有新的动静 (比方一篇博客) 公布时,会给 Kyma 发送一个 post.published 事件。Kyma 接管到该事件后,触发注册在该事件上的监听函数,逐个调用社交媒体平台的 API,创立对应的动静即可。

咱们本地部署的 WordPress,表演的就是下图右边 Business Solution 代表的角色。

装置 Kyma for WordPress 的插件之后,咱们可能在 WordPress Settings 标签页里,看到一个新的 Kyma Connector Settings 页面,保护 Kyma 实例的 url,登录用户名和明码等信息。

在上图 Kyma Connection 字段里保护的 url,会被 Kyma Application Connector 解析,并在 WordPress 和 Kyma 间建设相互信赖的连贯。

在 Kyma 控制台创立一个新利用,点击 Connection Application 按钮,把弹出的 url 保护到 WordPress Kyma Connection 字段。

如果把该 url 间接粘贴到浏览器里,能够看到以下内容:

  • csrUrl(Certificate Signing Request) 和 certificate:用来生成在 WordPress 和 Kyma 之间建设 SSL 连贯所必须的数字证书
  • api:Kyma Service Catalog 注册的 endpoint

咱们通过单步调式 WordPress 的形式,来深刻理解 WordPress 与 Kyma 建设平安连贯的技术细节。

WordPress 向传入的 url 发动 HTTP GET 申请(下图第 22 行代码的 wp_remote_get),获取到 CSR Certificate 和 API end point,存储在第 32 行的变量 $body_json 内。

第 73 行从变量 $body_json 的 csrUrl 字段拿到 Kyma 的 CSR(Certificate Signning Request)url,第 75 行向该 url 发送一个 POST 申请,拿到响应:

将 HTTP 响应数据另存为 WordPress 目录下的三个本地文件:

  • crt.pem
  • clientCrt.pem
  • caCrt.pem

接下来 WordPress 同 Kyma 的平安连贯,就是基于这些本地数字证书文件来实现。

建设了平安连贯后,下一步须要将 WordPress 指定的事件公布到 Kyma 下来。

点击上图 Save Changes 之后,WordPress 的 Kyma 插件会将用户保护的待注册事件,拼装成对应的 JSON 字符串,通过 HTTP POST 申请 向 Kyma 发送:

事件注册胜利后,在 Kyma Application 控制台,就能看到发动连贯申请的 WordPress 实例的对应记录:

同时在 Kyma Service Catalog 里,也能看到 WordPress 通过注册事件裸露进去的可拜访 API 入口:

WordPress 事件公布胜利后,这些事件就会呈现在 Kyma 实例控制台的 Service Catalog(服务目录)界面里,如下图所示。

这种事件注册机制,确保了 WordPress 和 Kyma 的松耦合关系:在 Kyma 平台上编写事件监听函数的开发人员,齐全不须要理解对于 WordPress 的任何技术细节,这些事件监听函数在 Kyma 上的载体就是一个个 Lambda Function,开发人员能够用本人喜爱的编程语言来实现函数。

创立一个 Lambda Function,为 WordPress 裸露给 Kyma 的 post.published 事件实现监听函数的逻辑。

函数实现的技术栈,抉择 Node.js:

Select Function Trigger 即触发形式抉择,咱们抉择 WordPress 裸露给 Kyma 的 post.published 事件。这样当 WordPress 里有新的 post 创立时,WordPress 会发送 post.published 事件,连同 post 的具体内容,传给 Kyma,后者会主动调用创立好的基于 Serverless 的 Lambda Function.

剩下的 Lambda Function 的实现工作就是纯正的 Node.js 编程:从事件参数 event 对象里将 WordPress 传入的 post 内容解析进去,调用 axios 工具库将此条 post 进行转发。

Lambda Function 实现里,我抉择了调用微信 Open API,将该条 post 推送给一个用于测试的硬编码的微信用户:

以上就是应用 Kyma 将 WordPress 里公布的内容主动 “ 同步 ” 到其余社交媒体平台比方微信的步骤。咱们简略回顾一下思路:

(1) 通过 Kyma Application Connector 与 WordPress 建设相互信赖的平安连贯。

(2) 将 WordPress 暴露出的 post.published 事件,公布到 Kyma Service Catalog 里。

(3) 实现 Kyma Lambda Function,监听 WordPress 所公布的 post.published 事件,实现对应的内容转发到社交媒体平台的性能。如果除了微信之后,还心愿转发到其余社交媒体平台上,只需再创立一个新的 Lambda Function,而后调用其余的社交媒体平台的公布 API 即可。

以上步骤同样实用于通过 Kyma 对其余的云原生利用进行扩大。

依照上述三个步骤,对 WordPress 进行扩大之后,公布一条新的帖子,对于影片《切尔诺贝利》的观后感:

单步调试 WordPress 的帖子公布性能,发现公布的帖子内容被推送到了 Kyma API Gateway 对应的 url:

回到 Kyma Lambda Function 函数的控制台,确认 WordPress 发送的事件内容,曾经胜利被 Kyma 接管到了:

最初我的微信号上胜利收到了 Kyma Lambda Function 里调用微信 Open API 发送的音讯:

应用 Kyma 扩大企业级云原生利用

在 Kyma 官网的客户胜利案例中,赫然有 SAP,Netconomy,Accenture,Digital Lights 这些企业用户。

SAP 在客户体验产品线(Customer Experience) 这一畛域推出的 C/4HANA 套件,蕴含市场云,电商云,销售云,服务云和客户数据云。Kyma 正是 SAP 举荐的对这些企业家云原生利用进行扩大的举荐平台和工具之一。

上面咱们来理解一些具体的扩大案例。

SAP 电商云(Commerce Cloud) 有一套订单状态编排模型,从用户下单到订单最终处于 Complete 状态,状态的迁徙通过一系列 Action 进行驱动。

假如咱们冀望在 SAP 电商云里实现这样一个加强场景:在用户下单之后,发货之前,削减一个自定义的查看步骤 Fraud Check(订单欺诈查看),如下图流程图内浅色矩形框所示。

一种比拟间接的形式,是在 SAP 电商云源代码里,查找订单编排流程里基于 Spring 框架的 Hook,通过自定义 Java Bean 的形式,实现自定义查看逻辑。这种形式在开发实现后,须要从新构建 SAP 电商云的 Java 源代码。这就是所谓的 In-App extension 形式。

如果抉择 Kyma 以事件驱动的形式对 SAP 电商云进行加强,则加强逻辑以 Lambda Function 的载体存储在 Kyma 平台上,而非对 SAP 电商云自身的源代码进行加强。这种形式又称为 Side-by-Side extension 形式。

次要的开发步骤如下:

(1) 在 SAP 电商云进行配置,将自定义事件 Fraud Check 公布给 Kyma.
(2) SAP 电商云的加强开发人员,登录 Kyma 控制台,创立 Lambda Function,将 Function Triggers 抉择为步骤一在 SAP 电商云里公布的自定义事件。Lambda Function 的实现内容,即从事件对象里解析出下单的客户信息,而后调用 Marketing Cloud 和 SAP 云平台提供的 Restful API,对该客户身份的有效性进行查看。

运行时,当用户下单后,SAP 电商云向 Kyma 抛出一个事件。Kyma 别离调用 SAP Marketing Cloud 和 SAP 云平台的 Business Partner API,将查看后果返回给 SAP 电商云。

登录 SAP 电商云 Backoffice 配置页面,定义一个新的 Action,ID 为 EXTERNAL_KYMA_FRAUD_CHECK.

登录 Kyma 控制台,创立一个新的 Lambda Function,Function Triggers 抉择为 SAP 电商云 Backoffice 里保护的自定义事件:

Lambda Function 的具体实现:

  • 代码 18~19 行:从 输出的 event 事件对象参数里,解析出订单 Code
  • 26 行:生产 SAP 电商云的 OCC(Omni Commerce Channel) Restul API,取得订单明细,从中取得下单的客户 ID
  • 30 行:依据客户 ID 拿到客户明细
  • 37 行:查看该客户的邮箱地址是否无效
  • 40 行:查看该客户是否第一次下单
  • 43 行:调用 SAP Marketing Cloud API 查看客户身份有效性
  • 46 行:调用 SAP 云平台 Business Partner API 查看客户身份有效性

上面对这种基于事件驱动形式所实现的加强实现进行测试。

在 SAP 电商云里创立一个新的订单,记下订单 ID 2139.

登录 SAP 电商云 Backoffice 控制台,查看自定义 Fraud Check 逻辑是否依照咱们冀望的流程来执行。

依据 ID EXTERNAL_KYMA_FRAUD_CHECK 进行搜寻,找到了之前新建的 Action 对应的流程日志记录:

关上订单的 Fraud Reports 面板,查看查看记录:

Email 字段查看后果:客户保护的 Email 字段是一个无效的邮箱地址。

首单查看 (First Time Order Check) 返回的分数是 100,依据 SAP 电商云以后配置,这个后果被断定为首单。

SAP Marketing Cloud API 调用返回的后果:

SAP 云平台 Business Partner API 调用返回的后果:

咱们再来看看另一个应用 Kyma 扩大 SAP 销售云即 SAP Cloud for Customer Sales 模块的例子。

这是一个所谓 Account Address Enrichment 的场景,用户在 SAP 销售云里创立 Account 主数据时,只需保护根本的地址信息,点击保留后,销售云发送事件给 Kyma,后者响应该事件,调用 SAP API Hub 上的 Address 微服务,把 Enrich 之后的地址详情,通过销售云 Account OData API 进行写回。这个加强能够缩小销售云用户录入 Account 数据的工作量。

这个加强最要害的一步,就是买通 SAP 销售云与 Kyma 的连贯,让 Kyma 可能接管到 SAP 销售云运行业务流程时抛出的事件。

进入 SAP 销售云 Administration 工作核心 的 Event Notification 配置页面:

新建一个销售云 OData 事件的消费者,即 Kyma 实例。

Consumer 创立页面须要保护远端 Kyma Application Connector url:

这个 url 能够通过登录 Kyma 控制台,点击 Connect Application 按钮生成:

回到销售云配置页面,指定将 Account 和 Opportunity 这两个 Business Object 的创立和更新事件,发送给 Kyma.

这些 Business Object 的事件公布行为,通过销售云的 Subscription 来形容:

保留配置后,到 Kyma 控制台,此时就能察看到 SAP 销售云(Sales Cloud) 注册的事件了。

点击 SAP Sales Cloud,可能查阅注册事件的技术明细,比方事件负载(Payload) 格局,蕴含的字段名和数据类型等。

剩下的就是和之前扩大 WordPress 以及 SAP 电商云一样的操作,在 Kyma 中基于 SAP 销售云注册的事件,创立 Lambda Function,解析事件参数并进行相应解决。出于文章篇幅限度,在 Lambda Function 里仅仅简略将销售云传入的事件对象的内容打印进去。

在 SAP 销售云里新建一个 Opportunity 并保留。

到 Kyma Lambda Function 日志控制台里,察看到了函数体里应用 console.log 打印出的来自 SAP 销售云的 Opportunity 创立事件蕴含的字段:

总结

本文首先简要介绍了 Kyma 这个底层基于 Kubernetes 的开源云原生利用开发平台和运行时,接着分成两大部分,别离分享了应用 Kyma 对传统的 On-Premises 利用 (WordPress) 和企业级云原生利用(SAP 电商云和 SAP 销售云) 进行扩大的案例。

这些扩大案例均来自笔者理论工作中的我的项目经验,心愿能起到抛砖引玉的作用,感激浏览。

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版