基于云的BPM需要RESTful服務嗎?ZapThink答說是,引發質疑聲不斷
作者 Richard Seroter 譯者 吳宇
ZapThink 的分析師 Jason Bloomberg聲稱基于云的業務流程管理(BPM)軟件將會給那些傳統的、不能很方便地遷移到云交付模式的 BPM 引擎帶來顛覆性影響。Bloomberg 這篇文章并沒有描述基于云的 BPM 所呈現的價值,而是著眼于他的一個斷言——任何云 BPM 引擎想要正常工作,基于 REST 的服務都是必不可少的。但是,來自 ebizQ 的 Michael Poulin對此有不同看法,他質疑這種無狀態的 RESTful 服務是否真的必不可少。
BPM 被認為是一種準則,以改進企業業績為目標,對業務流程進行構建、管理并優化。商用 BPM 軟件解決方案通常會提供一個平臺對基于流程的應用和業務規則進行建模,還會包含一個運行時引擎執行這些應用。雖然目前有些人質疑是否 BPM 本身就是一個失敗,但 Bloomberg 還是看到了 BPM 的價值,只是惋惜其發展空間被那些中間件廠商們所干擾。
廠商都喜歡 BPM,這是因為流程引擎對其中間件堆棧而言,是一個自然的附加軟件。協調多個應用也就意味著產生多種集成,那么為此就需要中間件。諸如此類種種吧。不管我們喊多少口號說跨平臺的服務組裝可以實現廠商獨立的流程,但大部分廠商還是都推出了各自專有的一套工具包。
Bloomberg 認為,如果這些廠商覺得他們可以方便地將其產品轉換到云上,那么由于其帶狀態的架構設計,他們將會事與愿違。
這里講的東西會比較有意思。為了達到云為分布式應用帶來的可伸縮性優勢,應用層必須是無狀態的。云可能需要產生額外的實例來處理加載,并且任何特殊實例都可能崩潰。但由于云是高度可用且分區容忍的,這樣的崩潰一定不能影響運行由云實例支持的流程。
這樣一來,就沒有辦法讓傳統的 BPM 引擎在云上正常運行。畢竟,BPM 引擎存在的價值在于維護流程狀態,但你不犧牲伸縮性在云實例上就做不到!換句話說,大廠商們所投入的用以構建以 SOA 平臺為中心的 BPM 引擎上的全部人力物力現在都白費了。云已經改變了 BPM 的規則。
Bloomberg 認為,基于云的 BPM 解決方案必須用(在客戶端和服務器端傳遞的)消息來維護流程狀態。這可以通過使用 REST 超媒體方面的特點并刪除客戶端與運行 BPM 引擎服務端之間的所有耦合做到。
一旦你仔細想想會發現這個觀點的強大是顯而易見的,因為 W3 本身就是這樣一種運行時工作流的原型樣例。你可以想象這樣一種工作流:任意一系列的點擊鏈接,然后加載 Web 頁面,最終——你所見到的那些頁面往往是不同服務器上所提供的各種不同的資源。你看不到一個重量級的、統一的流程引擎。
…
以【面向超媒體的架構】為基礎的 BPM 是一種潛在的顛覆性技術,而它也正面臨技術革新的窘境。
雖然對 Bloomberg 上述觀點表示贊賞,但 Poulin 提出了他的四段論,對無狀態性是基于云的 BPM 解決方案的關鍵這一斷言提出了異議。Poulin 對消息中過度的狀態傳輸持保留態度。
由此可見,如果一個服務以流程的方式實現,那么它可以自由管理其自身狀態,可以是有狀態的或是無狀態的(如果你把服務看成是一個服務工廠,并且你可以按需要來初始化服務,那么你的限制就只會在硬件資源上,而不是服務狀態)。在 2008 年就有關于在消息交互中攜帶流程狀態信息的想法,但仍然保持服務的無狀態性給很多那些通過服務接口來發送以兆計算消息字節的人很痛苦的失敗教訓。
…
我沒有看到云伸縮性和運行在云中應用的無狀態性之間有任何關聯。
一個基于云的 BPM 解決方案能否在沒有統一引擎支持、僅僅依賴超鏈接以及客戶端管理狀態下成功?Poulin 通過一個理論認證表達了他的顧慮。
好吧,假設我們不做流程處理,而只用鏈接。比如,我們使用 HTTP 的 GET 和 PUT 方法啟動一個流程,這符合“無需流程引擎!”的說法:當流程被觸發,一個鏈接指向規則引擎,并期望返回一個下一步該做什么的說明。那這個說明返回何處呢?規則的請求者是“無狀態的”流程,執行響應客戶端請求;那么,該說明可能只會返回客戶端(記住,流程可能并不維護其狀態),并且在這種情況下,返回的說明字節數要足夠短,以滿足 GET/PUT 方法的要求。接下來,客戶端再調用同一個流程(可能不同實例),并把說明傳遞回(到云中?)“流程”繼續執行,以此類推。如果你能夠這樣就把它推銷出去并做成生意,拜托,告訴我一下,讓我們來慶祝這樁生意是多么的愚蠢。
Bloomberg 說他的方法對某些人來講可能有點激進,他反駁說許多基于云的公司都已經在按這種新模式運行。盡管如此,Poulin 建議在把 BPM 這樣的東西轉移到云之前,業務執行者應該謹慎,并且遵循 Peter Drucker 的建議:
“沒有什么比有效地做那些根本不需要做的事更無用的了。”
查看英文原文:Does BPM-in-the-Cloud Require RESTful Services? ZapThink Says Yes, but Doubts Exist.