摘要:小的時候,聽過牛頓這樣謙虛的一句話如果說我看得比別人更遠些,那是因為我站在巨人的肩膀上。。發(fā)布一個的事件,事件包含創(chuàng)建訂單的字段。
這周Jerry在SAP上海研究院參加了一個為期4天的Kubernetes培訓,度過了忙碌而又充實的4天。Jason,Benny和Peng三位大神的培訓干貨滿滿,借此機會,Jerry和過去的兩位老領(lǐng)導Patrick和Evan敘了敘舊,也拜見了上海SAP圈子里的幾位大佬。以前在網(wǎng)絡(luò)上久聞大名,這次終于見到了大佬們本人,了卻我一樁心愿。
為什么SAP內(nèi)部也在開展Kubernetes的培訓呢?誕生于2015年7月的Kubernetes,是Google內(nèi)部多年使用的容器集群管理系統(tǒng)Borg的開源版本。由于凝聚了Google在容器編排領(lǐng)域多年的深厚功力,發(fā)布之后很快就一飛沖天,如今已經(jīng)成為事實上的容器集群管理領(lǐng)域的標準和霸主。
我們知道Docker的logo“萌萌噠”,一頭馱著軟件鏡像的集裝箱在IT世界的汪洋里自由遨游的鯨魚。
而Kubernetes的logo,則體現(xiàn)了Google這家老牌IT企業(yè)的睿智和大氣。Kubernetes源自古希臘語,意為“舵手”,Google的用意昭然若揭:Kubernentes(舵手)就是Google在云時代里,引領(lǐng)整個IT世界在容器編排管理這個領(lǐng)域里傲游的舵手和領(lǐng)導者地位的體現(xiàn)。
再回到SAP,作為一家向云轉(zhuǎn)型的軟件公司,據(jù)Jerry所知目前SAP內(nèi)部很多開發(fā)團隊的持續(xù)集成/持續(xù)交付的流程和系統(tǒng)已經(jīng)遷移到Kubernetes上,受益于Kubernetes高度的自動化和高可用性,SAP基于微服務(wù)架構(gòu)的產(chǎn)品開發(fā)團隊的交付流程大大簡化,同時運維人員的工作量也大大減輕。伴隨著SAP內(nèi)部對Kubernetes的使用,也誕生了一位位像Jason Gu,Benny Gu和Peng Wang(排名不分先后)這樣的Kubernetes技術(shù)專家。
Kubernetes只用于SAP內(nèi)部么?當然不是。Jerry之前的文章曾經(jīng)介紹過SAP云平臺上的Neo和CloudFoundry編程環(huán)境:
使用Java+SAP云平臺Neo環(huán)境+SAP Cloud Connector調(diào)用ABAP On-Premise系統(tǒng)里的函數(shù)
在SAP云平臺的CloudFoundry環(huán)境下消費ABAP On-Premise OData服務(wù)
如今(2018年11月),打開SAP云平臺官網(wǎng),會發(fā)現(xiàn)這樣一條新聞:
https://cloudplatform.sap.com...
按照網(wǎng)頁上提供的信息,Kubernetes在未來也會成為SAP云平臺支持的運行環(huán)境之一。SAP Partners們以前部署并運行在Kubernetes容器集群上的應(yīng)用,通過另一個開源工具,Gardener,可以容易地遷移到SAP云平臺的Kubernetes環(huán)境下。
Gardener的首頁也很有意思,口號是“The Kubernetes Botanist”,Jerry用過Gardener提供的一站式服務(wù)創(chuàng)建用于試用目的的Kubernetes集群,覺得確實非常方便,其簡捷的步驟為應(yīng)用軟件開發(fā)人員屏蔽了Kubernetes集群底層搭建和配置細節(jié),能夠在短短幾分鐘內(nèi)得到一個可用的Kubernetes集群:
這種Kubernetes-As-A-Service的特點,正和其口號里的"Botanist"相吻合,Gardener就像一位辛勤的園丁,在全球的Kubernetes初學者的laptop上播下了一顆顆Kubernetes集群的種子。
https://gardener.cloud/
除了SAP內(nèi)部產(chǎn)品產(chǎn)品的持續(xù)集成和持續(xù)交付已經(jīng)在使用Kubernetes,SAP云平臺將會添加對Kubernetes的支持之外,據(jù)Jerry所知,至少還有一個SAP發(fā)布的產(chǎn)品是基于Kubernetes的,那就是Kyma。
小的時候,Jerry聽過牛頓這樣謙虛的一句話:“如果說我看得比別人更遠些,那是因為我站在巨人的肩膀上。(If I have seen further, it is by standing on the shoulders of giants.)”。當時聽了也就聽了。今年上半年,我是在對Kubernetes一無所知的前提下接觸了Kyma,當時覺得一頭霧水。等聽了SAP上海研究院三位老師的Kubernetes培訓課程之后,再回過頭來看Kyma,忽然有點領(lǐng)悟到牛頓當年這句話的含義。
Kyma是什么? 又雙叒叕一個SAP開源的項目,源自希臘語,意思是wave(水波,波濤,注意下圖Kyma官網(wǎng)的水波logo吧,囧),Jerry個人揣測,這意味著SAP希望憑借Kyma,在本就風起云涌的云原生開發(fā)世界里再掀波瀾?
根據(jù)Kyma官網(wǎng)的描述,Kyma是一個基于Kubernetes的企業(yè)軟件擴展平臺,能以Serverless/微服務(wù)架構(gòu)的方式對On-premise或者云應(yīng)用進行擴展。
https://kyma-project.io/
當您在閱讀很多SAP C/4HANA的宣傳資料時,比如下圖對SAP C/4HANA五朵云的介紹,會看到另一個名詞,SAP Cloud Platform Extension Factory(SAP云平臺擴展工廠)。Kyma和SAP Cloud Platform Extension Factory的關(guān)系,恰如Open UI5和Fiori的關(guān)系。Open UI5是SAP推出的一個開源UI開發(fā)框架和UI控件庫,而Fiori是SAP 基于Open UI5這個技術(shù)框架開發(fā)出來的商業(yè)化產(chǎn)品(當然現(xiàn)在Fiori也代表SAP推薦的一種UI風格)。類似的,SAP Cloud Platform Extension Factory是SAP基于Kyma這個開源項目,再針對企業(yè)應(yīng)用所必須滿足的一些標準(比如SAP產(chǎn)品標準,區(qū)域特殊需求)而添加進額外的附加功能和實現(xiàn)的商用產(chǎn)品。
Jerry目前工作的團隊隸屬于SAP客戶體驗(Customer Experience)部門,這個部門的CTO Moritz Zimmermann, 在他的linkedin上發(fā)表過一篇博客,里面也提到了Kyma:
https://www.linkedin.com/puls...
也正是在這篇博客里,Mortiz給出了一個重要的指示:Kyma(SAP Cloud Platform Extension Factory)將來會成為SAP C/4HANA套件里所有基于微服務(wù)架構(gòu)產(chǎn)品的統(tǒng)一擴展工具。
Kyma到底有什么強大之處,能夠同時滿足SAP C/4HANA里五朵云的擴展需求?我們來看看Kyma的官方網(wǎng)站是怎么說的:
作為一個開發(fā)人員,上面這段Kyma的介紹文字,最吸引我的莫過于Jerry高亮的“Kyma能夠允許開發(fā)人員使用任何技術(shù)棧去擴展應(yīng)用,這些技術(shù)??梢院捅粩U展的原始應(yīng)用沒有任何關(guān)系”。
那么Kyma的工作原理到底是怎樣的?我們用一個具體例子來說明。
由于到目前為止出現(xiàn)了很多新名詞:容器,Kubernetes,Gardener,Kyma等等,在Netweaver上做二次開發(fā)的partner們可能覺得很陌生,所以這里我們選擇一個熟悉的場景作為例子。
假設(shè)有這樣一個數(shù)據(jù)同步的需求:每當SAP Cloud for Customer(C4C)里有銷售訂單創(chuàng)建或者修改時,把該訂單同步到S/4HANA去。
對于這種多個SAP產(chǎn)品間的數(shù)據(jù)同步需求,SAP推薦的解決方案是使用SAP PI或者SAP HANA Cloud Integration作為數(shù)據(jù)同步的中間件。
因為本文是談Kyma,所以Jerry介紹第三種解決方案。
C4C系統(tǒng)提供一個所謂OData事件通知機制:
下圖配置頁面含義是為銷售訂單這個Business Object的Create和Update兩個事件定義發(fā)布機制:一旦有新的銷售訂單生成或者已經(jīng)存在的銷售訂單被修改,C4C會通過我定義的OData服務(wù)zjerrysalesorder自動向這兩個事件的監(jiān)聽者發(fā)布事件。
事件的監(jiān)聽者,或者說消費者,在下面的界面注冊。我在S/4HANA系統(tǒng),A6P/213開發(fā)了一個Restful API,負責接收C4C系統(tǒng)發(fā)布的銷售訂單事件,根據(jù)C4C Odata提供的數(shù)據(jù)在S/4HANA創(chuàng)建銷售訂單。這是另一種輕量級的數(shù)據(jù)同步解決方案。
這種解決方案的核心就是發(fā)布者/訂閱者模式。其實這也正是Kyma的擴展原理。
1. 通過Application Connector,可以使Kyma同SAP C/4HANA的產(chǎn)品建立連接,然后進行事件注冊。
2. 事件注冊好之后,使用微服務(wù)架構(gòu)實現(xiàn)事件的監(jiān)聽者(消費者)。這也是Kyma官網(wǎng)里提到的"開發(fā)者可以使用任何技術(shù)棧進行擴展開發(fā)“的含義。舉個例子,我們在SAP Commerce Cloud里創(chuàng)建一個訂單后,客戶提出了基于該企業(yè)流程的一些特殊校驗邏輯。Commerce Cloud發(fā)布一個"Order Create"的事件,事件payload包含創(chuàng)建訂單的字段。我們開發(fā)并部署在Kyma上的微服務(wù)監(jiān)聽這個事件,微服務(wù)內(nèi)部實現(xiàn)可以采取任何技術(shù)棧,Commerce Cloud通過HTTP調(diào)用包含了企業(yè)自定義訂單校驗邏輯的微服務(wù),根據(jù)其返回的校驗結(jié)果進行后續(xù)處理。
通過這種方式,實現(xiàn)了進行二次開發(fā)的Kyma微服務(wù)同SAP標準產(chǎn)品的解耦。我們可以同ABAP Netweaver里傳統(tǒng)的流程擴展手段Business Addin(BAdI)進行比較,后者也能實現(xiàn)增強邏輯和標準產(chǎn)品的解耦,只不過BAdI增強和SAP標準邏輯是運行在同一臺物理機的同一個ABAP session內(nèi)的。而Kyma這種增強方式,標準產(chǎn)品通過HTTP調(diào)用去消費部署在Kyma上的包含增強邏輯的微服務(wù),雖然增加了網(wǎng)絡(luò)調(diào)用的開銷,但是能享受到Kyma底層的Kubernetes帶來的Servless特性,不用花費額外的工作量就能確保擴展的高可用性,節(jié)點處理能力的高擴展性和高伸縮性。
3. 為了確保應(yīng)用開發(fā)人員能真正專注于增強邏輯的開發(fā),Kyma還引入了Lambda函數(shù)的概念。使用過JavaScript ES6的箭頭函數(shù)和Java 8的Lambda表達式,函數(shù)接口的朋友們對這個概念一定不會陌生。
使用Kyma Lambda函數(shù),應(yīng)用開發(fā)人員不需要從頭實現(xiàn)一個微服務(wù),Kyma會自動將SAP標準產(chǎn)品發(fā)布的事件和上下文通過輸入?yún)?shù)注入到Lambda函數(shù)中,所有的增強邏輯均是現(xiàn)在Lambda函數(shù)內(nèi)。
下圖上半部分是Kyma內(nèi)的一個Lambda函數(shù),基于nodejs實現(xiàn),下半部分是完全等價的ABAP SICF服務(wù)實現(xiàn), Kyma中的event.extensions.request和response分別對應(yīng)ABAP里的server->request和server->response。
Lambda函數(shù)調(diào)用好之后,可以直接作為消費者綁定到某個事件上,被Kyma的Event Bus模塊觸發(fā)來實現(xiàn)對SAP產(chǎn)品的增強。當然,因為Kyma是基于Kubernetes,我們也可以直接用kubectl create -f
希望本文能讓大家對Kubernetes和SAP Kyma的關(guān)系從概念上有一個了解,感謝閱讀。
更多閱讀
SAP Cloud Platform Kubernetes Environment:
https://cloudplatform.sap.com...
使用Java程序消費SAP Leonardo的機器學習API
使用Java+SAP云平臺+SAP Cloud Connector調(diào)用ABAP On-Premise系統(tǒng)里的函數(shù)
使用JDBC操作SAP云平臺上的HANA數(shù)據(jù)庫
用JavaScript訪問SAP云平臺上的服務(wù)遇到跨域問題該怎么辦
在SAP云平臺的CloudFoundry環(huán)境下消費ABAP On-Premise OData服務(wù)
SAP數(shù)據(jù)中心概述
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/32779.html
摘要:小的時候,聽過牛頓這樣謙虛的一句話如果說我看得比別人更遠些,那是因為我站在巨人的肩膀上。。發(fā)布一個的事件,事件包含創(chuàng)建訂單的字段。 這周Jerry在SAP上海研究院參加了一個為期4天的Kubernetes培訓,度過了忙碌而又充實的4天。Jason,Benny和Peng三位大神的培訓干貨滿滿,借此機會,Jerry和過去的兩位老領(lǐng)導Patrick和Evan敘了敘舊,也拜見了上海SAP圈子里...
摘要:小的時候,聽過牛頓這樣謙虛的一句話如果說我看得比別人更遠些,那是因為我站在巨人的肩膀上。。發(fā)布一個的事件,事件包含創(chuàng)建訂單的字段。 這周Jerry在SAP上海研究院參加了一個為期4天的Kubernetes培訓,度過了忙碌而又充實的4天。Jason,Benny和Peng三位大神的培訓干貨滿滿,借此機會,Jerry和過去的兩位老領(lǐng)導Patrick和Evan敘了敘舊,也拜見了上海SAP圈子里...
摘要:當然,不同的產(chǎn)品,對訂單增強的實現(xiàn)方式也各不相同。在世界里,想對訂單處理流程做增強,同之前介紹的相比,相對來說受的限制要多一些。首單檢查返回的分數(shù)是,根據(jù)當前配置文件這個結(jié)果被認定為首單。 盡管有一萬個舍不得,2018年還是無可挽回地離我們遠去了。 唯有SAP成都研究院的同事和我去年在網(wǎng)絡(luò)上留下的這些痕跡,能證明2018年我們曾經(jīng)很認真地去度過每一天: SAP成都研究院2018年總共...
摘要:當然,不同的產(chǎn)品,對訂單增強的實現(xiàn)方式也各不相同。在世界里,想對訂單處理流程做增強,同之前介紹的相比,相對來說受的限制要多一些。首單檢查返回的分數(shù)是,根據(jù)當前配置文件這個結(jié)果被認定為首單。 盡管有一萬個舍不得,2018年還是無可挽回地離我們遠去了。 唯有SAP成都研究院的同事和我去年在網(wǎng)絡(luò)上留下的這些痕跡,能證明2018年我們曾經(jīng)很認真地去度過每一天: SAP成都研究院2018年總共...
摘要:當然,不同的產(chǎn)品,對訂單增強的實現(xiàn)方式也各不相同。在世界里,想對訂單處理流程做增強,同之前介紹的相比,相對來說受的限制要多一些。首單檢查返回的分數(shù)是,根據(jù)當前配置文件這個結(jié)果被認定為首單。 盡管有一萬個舍不得,2018年還是無可挽回地離我們遠去了。 唯有SAP成都研究院的同事和我去年在網(wǎng)絡(luò)上留下的這些痕跡,能證明2018年我們曾經(jīng)很認真地去度過每一天: SAP成都研究院2018年總共...
閱讀 778·2021-10-27 14:15
閱讀 1254·2021-10-15 09:42
閱讀 2795·2019-08-30 15:53
閱讀 1332·2019-08-23 17:02
閱讀 3014·2019-08-23 16:23
閱讀 3244·2019-08-23 15:57
閱讀 3533·2019-08-23 14:39
閱讀 570·2019-08-23 14:35