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