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