1. 程式人生 > >微服務架構(三):微服務重構應用及IBM解決方案

微服務架構(三):微服務重構應用及IBM解決方案

解析微服務架構系列文章將分幾篇描述微服務的定義、特點、應用場景、企業整合架構的演進以及微服務轉型思路和技術決策考慮等內容,並以IBM技術為例介紹如何實現微服務架構轉型。

上一篇文章介紹了融入微服務的企業整合架構的演進,並介紹互動式系統的微服務模式及技術決策例子。

本篇文章將介紹已有IT應用如何進行微服務重構的轉型,以及IBM微服務相關解決方案的介紹。

微服務轉型

採用微服務架構意味著以更復雜的運維環境為代價,實現更高速的應用交付及更快推出市場。因此企業需要在更快的交付與更復雜的運維之間進行權衡。

大部分企業都有大量遺留的應用系統,因此對需要更快更好地滿足業務需求成為迫切任務時,大部分情況下企業不會全新構建一個完整的應用,通常情況下是企業對已有應用進行重構或希望能儘量重用已有程式碼。

向微服務架構演進通常包括以下幾個階段:

1.傳統的SOA服務化改造;

2. 開始引入某些微服務原則,進行鍼對性重構,如“一個任務一個服務”;

3. 引入整套完整的微服務原則;

4. 實現微服務的規模化 – 新增服務發現、服務縮放能力等增強特性。

並非所有應用都需要完成上述的各個階段,一個基本原則是重構解決針對性業務問題,需要避免為了“微服務”而“微服務”化。

需要注意的是並非所有應用都可以轉變為微服務架構:

  • 部分系統無法重構為微服務架構:例如非常老舊又缺乏維護的系統,對此類系統可以採用“如果應用無法被打破,就不要試圖解決它”的策略,其中SOA資產重用化應該是更佳的解決方案。

  • 原有應用無法改變資料儲存方式:對這種情況,需要考慮如果資料仍然保持煙囪式或集中式儲存,那對應用進行微服務化是否具有業務價值;需要考慮切分資料庫是否會導致事務性保障的缺失並進而影響系統的穩定性;同時也可以考慮應用能否採用如BASE、CQRS等模式解決資料的一致性問題。

  • 原有系統如何融入微服務架構:在原有系統中剝離部分功能並重構為微服務時,如何實現微服務與原有系統在高可用性上的隔離,如果原有系統與微服務的擴充套件性不匹配又如何處理?這些問題也許要在進行微服務重構前考慮清楚。

微服務重構

在重構應用方面,可通過以下方法梳理微服務:(1)每個REST服務是一個潛在的微服務;(2)每個SOAP web服務或EJB是一個潛在的微服務,特別是無狀態的session bean,需要將面向功能的介面重新設計為面向資產的介面,並使介面轉變為RESTful形式;(3)使用領域驅動設計(domain-driven design)發現企業資產,這些資產可能是微服務。

在重構資料方面,需要考慮以下幾個方面:(1)尋找與其他資料關聯不大的資料孤島,檢查系統的實體-關係圖;如果有與其他資料斷開的資料,就是一個潛在的資料重構點;(2)資料表非規範化,對高規範化資料庫中非規範化一些資料表以將資料重組為更大的邏輯塊,其目的是增加資料冗餘度使其更容易被打破;(3)反向批資料更新,對資料重構時需要考慮資料重構失敗時可批量地將新資料反向導回舊的資料模式;(4)使用主資料管理,對被廣泛使用的資料實體組成一個單一的一致性檢視,並開發相應的微服務與主資料一起工作;(5)在SQL資料庫中尋找儲存在BLOB(二進位制大物件)欄位型別中的程式碼,轉而將這些物件儲存在NoSQL資料庫中,例如以鍵值(Key-value)儲存方式儲存;(6)尋找活躍的記錄模式,與其他無關的Flat物件,使用文件模式資料庫進行儲存,例如Cloudant或Mongo等。

微服務重構後還需要重新打包應用,包括:(1)分割應用的EAR檔案並打包成獨立的WAR檔案;(2)應用“一個容器一個服務”,分別部署每個WAR檔案至其自有的WebSphereLiberty例項執行時或Docker容器中;(3)分別構建、部署和管理,為每個WAR檔案使用獨立的DevOps管線,每個WAR檔案獨立伸縮和管理。

微服務IBM解決方案

  • API Connect - 建立、執行、管理及保護API能力開放和微服務應用的企業級平臺。

企業為了加速應用開發以滿足不斷增長的需求,需要開放內部的業務和資料能力並吸引合作伙伴及開發者基於其能力快速創新,IBM API Connect為企業提供了一個統一完整的API能力開放平臺解決方案,實現API的建立、執行、管理、安全保證和微服務執行環境以滿足企業參與API經濟的需求。

IBM API Connect平臺為數字化應用提供基礎能力:(1)建立微服務並將為其提供對外的API介面;(2)管理、控制及保護REST和SOAP API;(3)為企業內外的應用開發者提供自服務的API門戶;(4)將API介面釋出到多個開發者門戶;(4)分析API用量和效能指標。

  • WAS Liberty+WXS - 基於OSGi核心,高模組化,高動態性的輕量級WebSphere應用伺服器,以及具備企業級高可用性的快取服務,助力快速交付的微服務應用

微服務應用要求與各微服務有獨立的執行環境,因此傳統的應用伺服器容器顯得過於笨重,因此企業需要使用輕量級的應用伺服器容器,但同時還需要考慮完善的技術服務支援。

IBM WAS Liberty是IBM開發的基於Java的輕量級WebSphere應用伺服器,既滿足了創新型應用輕量級的要求,又為企業提供了有效的商業技術支援,避免企業由於使用開源軟體而有可能出現的技術支援風險。




   WXS(WebSphere eXtreme Scale)則提供高效能、可擴充套件的快取記憶體框架和網格技術,通過多樣化資料儲存加速微服務應用訪問效率。

  • PureApp+ICO+UCD組成的混合雲框架為企業提供私有云自動化部署的完整解決方案

微服務應用需要IT基礎設施提供多種自動化能力以實現應用的快速上線和自動伸縮。IBM UrbanCode Deploy、IBM CloudOrchestrator和IBM PureApplication是三種可供企業客戶組合搭配提供包括企業自動化部署加速應用持續交付、企業私有云自動化彈性伸縮環境和軟硬一體化的私有云解決方案。

  • IBM Bluemix 創新應用開發平臺

微服務架構提倡使用多樣化的程式語言和多樣化的儲存,以最適合的技術解決業務需求並實現快速上線和自動伸縮。IBM Bluemix平臺能夠很好地滿足此類需求。

Bluemix 是一個基於開放標準和雲的平臺,可以用於應用的快速構建、執行及管理。Bluemix 由三大關鍵的開放計算技術支撐:Cloud Foundry, Docker, 以及 OpenStack。在其上進行了大量服務(目前超過100多種,並且服務數量還在不斷增長)的擴充套件,健壯的 DevOps 工具,整合能力,以及無縫的開發人員體驗。

Bluemix四大核心能力提升創新應用交付速度和價值:(1)Bluemix提供一體化執行環境,保證創新應用秒級上線;(2) Bluemix提供百餘種流行的服務模組,構建應用簡單快速;(3) Bluemix提供高效管理手段DevOps,保證應用強健穩定;(4) Bluemix可以放在本地,又可以無縫連線其公有云,具有多種部署模式,讓企業具有更大的靈活性,形成更大的創新生態圈。