聊聊什么是微服務?
什么是微服務?
微服務背后的中心思想是,當某些類型的應用程序被分解成更小的、可組合的部分并協同工作時,它們會變得更容易構建和維護。
每個組件都是不斷開發和單獨維護的,應用程序只是其組成組件的總和。這與傳統的“整體式”應用程序形成對比,后者全部是一體式開發的。
作為一組模塊化組件構建的應用程序更易于理解、更易于測試,最重要的是,在應用程序的整個生命周期內更易于維護。它使組織能夠實現更高的敏捷性,并能夠大大縮短將研發部署到生產所需的時間。這種方法已被證明是優越的,特別是對于由不同地域和文化的開發人員團隊開發的大型企業應用程序。
還有其他好處:
- 開發人員獨立性:
小團隊并行工作,迭代速度比大團隊快。
- 隔離和彈性:
如果一個組件死了,你在啟動的一段時間里,應用程序的其余部分繼續運行。
- 可擴展性:
較小的組件占用較少的資源,并且可以擴展以滿足該組件不斷增長的需求。
- 生命周期自動化:
單個組件更容易適應持續交付管道和單體應用無法實現的復雜部署場景。
- 與業務的關系:
微服務架構沿業務領域邊界劃分,增加了整個組織的獨立性和對業務的理解。
微服務的通用定義通常依賴于每個微服務提供一個 API 接口,通常但不總是一個無狀態的 REST API,可以像標準網頁一樣通過 HTTP(S) 訪問。這種訪問微服務的方法使開發人員可以輕松使用它們,因為它們只需要開發人員使用已經熟悉的工具和方法。
這是一個新概念嗎?
不是什么新鮮事。還有其他編程范式可以解決這個相同的概念,例如面向服務的體系結構 (SOA)。然而,最近的技術進步加上對集成“數字體驗”的期望越來越高,催生了用于滿足現代業務應用程序需求的新型開發工具和技術。
微服務不僅依賴于為支持這一概念而建立的技術,還依賴于一個擁有文化、知識和結構的組織,以便開發團隊能夠采用這種模型。微服務是 IT 部門向 DevOps 文化轉變的一部分,在這種文化中,開發和運營團隊密切合作以支持應用程序的整個生命周期,并經歷快速甚至持續的發布周期,而不是更傳統的長周期.
為什么開源對微服務很重要?
當您從頭開始將應用程序設計為模塊化和可組合的時候,它允許您在許多地方使用插入式組件,而過去您可能需要特定的解決方案,因為組件的許可或特殊要求,但是現在,許多應用程序組件可以是現成的開源工具,并且有無數的開源項目實現了微服務架構的跨領域需求,例如身份驗證、服務發現、日志記錄和監控、負載平衡、擴展等等。
關注微服務還可能使應用程序開發人員更容易為應用程序提供可選接口。當一切都是API時,應用程序組件之間的通信就標準化了。組件要使用您的應用程序和數據,所要做的就是能夠通過這些標準api進行身份驗證和通信。這允許組織內部和組織外部的人員(在適當的時候)輕松地開發利用應用程序數據和服務的新方法。
容器技術從何而來?
輕量級操作系統容器的現代概念是在21世紀初作為FreeBSD項目的一部分引入的。Docker為創建和共享容器映像提供了更好的用戶體驗,因此從2013年開始就得到了廣泛采用。
容器非常適合微服務,滿足了輕量且靈活的組件的需求,這些組件可以輕松地管理和動態替換。與虛擬機不同的是,容器被設計成能夠運行容器設計要做的任何事情的最小可行部分,而不是將多個功能打包到同一個虛擬機或物理機中。Docker和類似工具提供的開發便捷性有助于快速開發和測試服務。
當然,容器只是一個工具,微服務體系結構只是一個概念。完全有可能在不使用容器的情況下按照微服務方法構建一個應用程序,就像在容器中構建一個更傳統的應用程序一樣,當您想要利用容器編排功能而不需要重寫大型、整體的應用程序時,這可能是有意義的。
你如何編排微服務?
為了實際運行基于微服務的應用程序,您需要能夠監視、管理和擴展不同的組成部分。有許多不同的工具可以幫助您完成這一任務。對于容器,像Kubernetes這樣的開源工具可能是解決方案的一部分。或者,對于應用程序的非容器組件,可以使用其他工具來編排組件:例如,在OpenStack云中,您可以使用Heat來管理應用程序組件。
另一個選擇是使用一個平臺即服務(PaaS)工具,它可以讓開發者專注于編寫代碼通過抽象一些潛在的編排技術和允許他們容易選擇現成的開源組件應用程序的某些部分,就像一個數據庫存儲引擎,日志服務,持續集成服務器、web服務器或其他部分。一些PaaS系統,如OpenShift,直接使用Docker和Kubernetes等上游項目來管理應用程序組件,而另一些系統則試圖自己重新實現管理工具。
現有的應用程序呢?
雖然利用微服務可能是一個組織未來IT戰略的重要組成部分,但肯定有許多應用程序不滿足此模型,也不太可能在一夜之間對這些應用程序進行重新架構以滿足此新范式。遷移到微服務體系結構有文化和技術成本,但幸運的是,如果組織具有可靠的雙模式IT戰略,微服務和傳統應用程序可以在相同的環境中一起工作。
根據Gartner的說法,雙模式IT是一種能力,既可以交付注重穩定性和正常運行時間的傳統IT應用程序,也可以通過更新的方法交付更新的、更敏捷的、但可能較少測試的應用程序,這些方法包括開發人員自我供應機器的能力和較短的開發周期。
許多(如果不是大多數)組織將需要適應在未來許多年使用這兩種方法。
原文:https://opensource.com/resources/what-are-microservices