上一篇文章介紹了微服務架構的起源、定義、通用特性、常見概念誤區、微服務架構與SOA架構比較、微服務架構收益以及企業引入微服務架構的策略。
本文將介紹融入微服務的企業集成架構的演進,並描述交互式系統的微服務模式及相關技術決策,然后給出了一個具體的微服務架構業務應用的例子。
交互型系統(System of Engagement)與記錄型系統(System of Record)
隨着移動互聯網的快速發展,企業除了需要提供傳統核心IT系統能力之外,還需提供客戶與合作伙伴友好型的以交互為重點的創新及交互式系統。這兩類系統的特性與稟賦完全不同,因此企業IT的支撐邁入了雙速IT時代。
企業微服務架構的引入主要集中在以下兩類系統:
-
記錄型系統:是指傳統的應用系統,對應用所關注領域的信息進行增刪改查作為應用的核心能力。如CRM、ERP、OA等系統。記錄型系統使用的往往是一些傳統的經典IT技術構建,往往更難改變,其集成難度也較高。
-
交互型系統:是指以與用戶交互為主要目的而開發的應用系統。如各種移動應用、微信、微博等等。交互型系統更多地會采用現代的各種新技術語言及運行時部署,具體高度的敏捷性,通過簡單的現代化連接即可實現集成。
融入微服務的企業集成架構
不同的企業背景應該采用不同的微服務架構引入策略:
-
對大型的成熟企業而言,由於本身已有大量在建的企業IT系統,因此決定了微服務架構僅是其多種應用架構風格之一,大型企業在服務總線與能力開放網關的集成架構下,可以首先從交互型系統入手引入基於微服務架構的應用,逐步積累面向微服務的開發運維經驗。另外,對於部分新建的記錄型系統,也可以考慮采用微服務架構進行構建,並通過服務總線等SOA集成技術實現與企業遺留系統的信息交互。
-
對於初創企業而言,由於其沒有任何歷史包袱,因此可以考慮將企業范圍的整體架構以(微)服務架構為基礎進行搭建。
-
大型成熟企業在企業集成架構及不同應用(整體式應用與微服務應用)架構風格中使用的技術及中間件也各有不同。例如:在整體式應用中往往更強調應用的交易完整性、安全性、數據的一致性等高標准特性,而微服務應用則更強調系統功能的快速上線。因此,這導致了這兩類系統所偏好的技術及中間件產品會有差異。下圖是在一個企業集成架構中,不同應用及集成所對應的IBM軟件產品的示例:
-
整體式應用使用WAS ND集群化企業級應用服務器和DB2數據庫。
-
微服務應用使用輕量級的WAS Liberty、Node.js,以及NoSQL數據庫。
-
甚至可以考慮將其部署至公有雲PaaS平台(如IBM Bluemix)上以充分利用PaaS平台上眾多的服務能力。
-
集成組件使用企業級的IBM Integration Bus服務總線以及API Connect能力開放網關解決方案。
-
在系統雲化方面,整體式應用與微服務應用也具有不同的偏好。因此,未來的企業必然朝着混合型部署架構演進:
-
企業級整體式應用部署偏好於系統專用資源模式,也可根據各個應用特性評估是否可遷移至企業私有雲之上以實現企業IT資源優化部署。
-
微服務應用則偏好於生於雲端的PaaS平台,使其可方便地使用各種就緒的底層服務,並采用多樣化的編程語言和持久化技術。
交互式系統的微服務模式
交互式系統微服務模式包括多渠道交互層與業務邏輯層:
-
多渠道交互層通常采用“后端服務前端”的設計模式。
-
業務邏輯層則采用微服務架構,通過垂直服務而非水平分層實現對不同業務功能的解耦。
-
各業務服務微服務的依賴關系是微服務架構設計的一個考慮重點,一個業務服務可以委托給其他業務服務,但需盡量避免循環依賴。需要注意的是每個微服務仍然實現了一個完整的任務,而不是傳統的水平分層模式。
交互式系統微服務架構應用的技術決策
1、編程語言的考慮:
-
Java:鑒於Java有廣大的受眾以及其商業軟件的企業級保障能力,以及在市場上能夠非常容易找到優秀的開發人員,並且Java已開始加速增加最新和最現代的語言特性如Lambda等,Java仍然是實現業務邏輯層的不二之選。其他語言技術雖然層出不窮,各有優點,但並沒出現新的統治級編程語言。
-
Node.js:在交互層,Node.js是JavaScript服務端的解決方案,結合其他技術組成的MEAN全堆棧javascript開發框架(Mongo DB – 簡單的NoSQL數據庫,使用JSON風格存儲文檔;ExpressJS – 是一個Web應用框架,提供有幫助的組件和模塊幫助建立一個網站應用; AngularJS – 是一個前端MVC框架;Node.js -是一個並發異步事件驅動的Javascript服務器后端開發平台。),使Node.js正成為REST服務實施和構建交互式系統方面實上的解決方案。
2、多樣性持久化考慮:使用合適的NoSQL技術存儲持久化數據。
交互式系統基於PaaS雲端部署方式:隨着PaaS雲技術的日益成熟,企業可以考慮將交互式系統部署於雲端,以充分利用PaaS平台上的各種服務。可將應用的Web/移動層遷移到雲端,交互模型存儲到雲端,將記錄型系統能力以API形式開放出來實現與交互式系統的連接。
交互式系統微服務架構例子
-
航班預訂應用微服務架構設計
-
航班預訂應用采用多樣化技術滿足不同的業務技術特性。
以上內容介紹了融入微服務的企業集成架構的演進,並描述交互式系統微服務模式及相關技術決策,然后給出了一個具體微服務架構業務應用的例子。
下一篇文章將介紹已有IT應用如何進行微服務重構的轉型,以及IBM微服務相關解決方案的介紹。
——本文轉載