如何使用軟件微服務?
譯文?譯者 | 布加迪
審校 | 孫淑娟
51CTO讀者成長計劃社群招募,咨詢小助手(微信號:TTalkxiaozhuli)
軟件正變得越來越大。企業軟件的每一次迭代和發布都立足于一堆已經很龐大的代碼、數據集、功能和公式,最終形成更龐大、更廣泛、越來越全面的軟件應用程序、套件或平臺。
同時,軟件也變得越來越小。
在分解式互聯網和云計算網絡中,我們日益使用較小的增量式(通常可重用的)組件和微服務。使用微服務(和微服務架構)描述了一種使用模塊構建的軟件系統,所有模塊都有自己特別定義的功能、任務和角色——每個模塊通過一個標準化的、定義清晰的接口(比如API)加以連接。
毫無疑問,微服務方法在大多數方面都優于傳統的單體架構。許多組織轉向微服務,以避免供應商鎖定,消除與單體方法相關的成本和限制,并提升敏捷性(比如,每個服務可以獨立開發和部署,無需引起停運或需要重構應用程序的其他部分)。此外,獲得擁有處理任務所需的合適功能的工具有明顯的好處。
1、如何運行微服務?
如果這些介紹性陳述描述了現代軟件的形態,那么我們應該以什么樣的節奏、什么樣的操作方式來使用微服務呢?開源數據平臺公司Directus的聯合創始人兼首席執行官Ben Haynes認為,輪輻式(hub and spoke)方案是關鍵。
他認為其理論是體現在軟件應用開發領域的這個明顯事實的結果,即部署大量的微服務有許多缺點。
Haynes解釋:“從一種簡單的單體模型到一種有成百上千個相互依賴關系的復雜模型,會導致難以理解和維護的數據生態系統,需要許多昂貴的許可證,迫使用戶培訓和入職面臨陡峭的學習曲線。如果其中一項服務向前邁進,另一項服務停滯不前或不再受到支持,它們之間的集成和依賴關系可能會隨之破裂。一個依賴關系的破裂可能會造成多米諾骨牌效應,導致運營戛然而止。”
由于微服務常常不能完美地首尾銜接,因此功能上可能存在缺口,需要用定制的軟件代碼和邏輯來填補。在數據在不同平臺上彼此孤立的情況下,數據流之間脆弱的連接也會讓情況變得更復雜。
2、為什么采用輪輻式?
Haynes面對一小群國際媒體時暢談:“許多組織在評估技術架構時,應改而竭力采用更均衡的‘輪輻式’方法,它們借助的解決方案奠定了完整而堅實的數據基礎,覆蓋業務需求(輪),同時根據需要,仍然與微服務相集成,允許專業化(輻)。這種方法將單體架構的穩定性與微服務的敏捷性相結合,因此組織可以在不必為復雜性過度操心的情況下充分利用優勢。”
他的整個理論和基本原理比較容易理解和掌握;組織可以將輪視為基礎數據層,即可以提供大約80%的所需功能的單一數據訪問點。
Haynes解釋道:“輪旨在通過API、軟件開發工具包(SDK)和webhook等其他工具與應用程序連接,以便專門的解決方案結合在一起,最有效地滿足業務需求。”
他接著表示,輪相當于通用或關鍵功能的基準,但仍然允許組織輕松連接其他關鍵業務系統,比如Stripe、Hubspot、Salesforce或眾多高度專業化的工具。
Haynes澄清道:“無需管理多個基礎服務,這消除了任何功能缺口,因為在不改變堆棧或干擾運營的情況下,連接新工具或功能變得很容易。”
3、須經實際檢驗
他怎么如此自信地認為這種方法有效呢?因為他公開表示,Directus正是使用這種模板創建了今天推向市場的開放數據平臺技術。其平臺旨在取代單一平臺中的許多不同系統(通過單一可擴展的API整合數據,并確保數據易于訪問)。
在最近一個例子中,一家國際航空公司使用Directus平臺整合了單一數據源的多個系統,包括預訂、庫存、機場服務亭、移動應用程序等,最終降低了成本,消除了系統之間的數據差異。
Haynes總結道:“通常來說,我們發現輪輻模型消除了軟件開發/部署方面的障礙,減輕了工程師的負擔——讓他們可以騰出時間,以處理更高價值的創收活動。”
軟件工程社區有一句很受歡迎的格言,說的是“面臨選擇時,兩者都要”——這句真理在這里得到了很好的證明和驗證。隨著軟件世界變得越來越大的同時變得越來越小,我們就需要能夠在每個層面都倡導平衡之道。
現在是時候做大了,但也要借助輪輻式邏輯做小,不過先不妨給輪胎打打氣。
原文鏈接:https://www.forbes.com/sites/adrianbridgwater/2023/01/10/how-to-use-software-microservices/?sh=3bd18ea11085