天天看點

SAP Spartacus簡介100% API-Driven

終于寫到Jerry目前正在做的開發任務了。

2015年的時候,那時Jerry已經做了一年多的SAP UI5開發,想進一步精進自己的開發技能,就申請了一個位于德國Walldorf總部的UI5 Extensibility開發的Fellowship Program,為期6個月。Jerry發了履歷給接收Fellowship的團隊老闆,很快收到回複,團隊老闆對我的履歷很感興趣,但是表示這個Program沒有Relocation Budget,如果我過去,在Walldorf的住宿得我自己掏錢解決。因為這不是商務出差,是以也不會有專門的同僚幫我在當地租房。想到這一系列的麻煩,最後我隻能放棄。

沒想到五年之後,我再次獲得了另一個純前端的開發機會,SAP Spartacus.

什麼是Spartacus?Spartacus是SAP Commerce Cloud的Storefront(電商鋪面)應用,基于Angular開發而成。

借助SPA(Single-Page-Application)和PWA(Progressive-Web-Application)特性的支援,Spartacus能夠提供近似原生應用的使用者體驗,同時具備高度的可配置性和可擴充性。

先看看Spartacus長什麼樣。對于國内習慣了網購的朋友來說,無需任何教育訓練就能毫無困難地使用Spartacus進行購物下單,這些操作流程我們已經熟悉得不能再熟悉了。

SAP Spartacus簡介100% API-Driven
SAP Spartacus簡介100% API-Driven
SAP Spartacus簡介100% API-Driven

可能大家會覺得上面截圖的界面比較樸素,不夠美觀?前面已經提到,Spartacus具有高度的可配置型和可擴充性,SAP客戶可以基于Spartacus開發出具有自己獨一無二風格的Storefront應用。

一個成功案例就是,樂高的線上銷售

Storefront .
SAP Spartacus簡介100% API-Driven
SAP Spartacus簡介100% API-Driven
SAP Spartacus簡介100% API-Driven
Spartacus最顯著的兩個特點:

  • 開源(https://github.com/SAP/spartacus)
  • 以庫檔案的形式釋出
SAP Spartacus簡介100% API-Driven

也就是說,客戶隻需要建立一個Angular應用,在package.json裡添加對SAP Spartacus庫檔案的依賴,就可以使用上圖所示的Spartacus Core和UI Component,開發滿足自己實際需求的Storefront了。

下圖就是Angular應用中的package.json檔案中導入Spartacus的四個依賴庫檔案的方式:

SAP Spartacus簡介100% API-Driven

客戶采用這種方式開發而成的Storefront應用,其自開發代碼(下圖淡黃色矩形框所示)是更新安全的,即自開發代碼不會因為Spartacus庫檔案的版本更新而被覆寫掉。

SAP Spartacus簡介100% API-Driven

Spartacus是一個仍在持續開發的項目,目前最新的版本是3.0. 通常情況下,每隔6個月會進行Major版本的更新,比如從2.0到3.0. 每隔6周,會進行Minor版本的更新,比如從2.0到2.1.

SAP Spartacus簡介100% API-Driven

對SAP Commerce Cloud有所了解的朋友們都知道,Hybris以前還有一個基于JSP的Accelerator,也能提供浏覽店鋪商品,加入購物車,結帳支付的功能,那麼為什麼SAP仍然會啟動Spartacus的開發,并在2019年7月正式釋出了1.0版本呢?

我的同僚張健(Zhang Jonathan)在他的文章 從産品展示頁面談談Hybris的特有概念和設計結構 裡給大家介紹過,Commerce Cloud的前身Hybris是一個monolithic(單體)應用,其中Storefront即Accelerator實作的技術棧是JSP + Java,沒有前後端分離的概念。

SAP Spartacus簡介100% API-Driven

Accelerator雖然如張健文章裡介紹的那樣,具有高度可擴充性,但是也存在一些問題:

因為monolithic(單體)應用的特性,Accelerator本身也是Commerce平台的一部分,通過Java調用經Facade Layer作為入口,消費Service Layer的服務:

SAP Spartacus簡介100% API-Driven

如下圖高亮代碼所示:

SAP Spartacus簡介100% API-Driven

是以,Accelerator和Commerce平台無法分别進行更新。

另外,SAP官網明确指出,因為SAP以源代碼的方式釋出Accelerator,作為實施的模闆,是以一旦客戶開始了Storefront的定制化工作,修改了這些模闆的源代碼後,就無法再導入針對目前工作版本的Accelerator的bug fix. 這個道理同ABAP Netweaver裡面,如果開發人員直接修改了标準代碼後,打不了SAP note是一樣的。

SAP Spartacus簡介100% API-Driven

這也就是SAP官網上稱Accelerator為"Extendable but not Upgradable"的原因。

SAP Spartacus簡介100% API-Driven

Commerce Accelerator的這些不足,通過2019年誕生的Spartacus Storefront得到了彌補:

SAP Spartacus簡介100% API-Driven

100% API-Driven

Spartacus和Commerce背景的所有互動均通過API完成,Commerce API endpoint通過環境變量SPARTACUS_BASE_URL注入Spartacus,如下圖所示:

SAP Spartacus簡介100% API-Driven

Focused Development

使用Spartacus,SAP Commerce Storefront開發人員隻需要專注于Angular開發。前後端分離之後,Storefront的開發,不再需要Accelerator時代的全棧開發模式。

Continious Delivery

以周為機關的patch釋出頻率,使得持續傳遞成為可能。同時,客戶通過導入Spartacus庫檔案的方式進行Storefront的二次開發,其定制化代碼和Spartacus庫檔案是獨立的實體,可以分别進行更新;Spartacus和SAP Commerce可以分别進行部署,亦可進行各自的更新。

更多關于SAP Spartacus的介紹,請參考openSAP上的公開課.