譯者 | 李睿
審校 | 重樓
微服務架構作為小型、獨立、松散耦合的服務套件,促進了應用程序的開發。由于其眾多優點(例如可擴展性、可靠性、更快的開發周期、更容易維護單個服務等),在軟件行業中獲得了廣泛的關注,很多組織正在按照微服務架構構建應用程序。然而,微服務也面臨一些陷阱。
在工作中處理用例時,可以觀察到微服務架構的另一面,即微服務的激增。本文將詳細介紹與過度創建微服務(微服務激增)相關的陷阱,并提供有關其原因、影響和潛在緩解策略的見解。
什么是微服務激增?
微服務激增指應用程序框架/生態系統中微服務數量的不受控制、不受監管,以及在某種程度上不受歡迎的增長。這通常是由于缺乏架構計劃和治理、架構監督、服務定義和邊界不明確,以及組織邊界等一些非技術原因造成的。微服務激增會導致架構復雜性增加、效率和性能下降、運營和維護挑戰、功能重復以及服務調用迷宮,進而導致性能進一步下降和可能對客戶產生負面影響。以下討論其中的一些陷阱及其可能的解決方法。
常見的陷阱
1.架構復雜性增加
隨著生態系統中微服務數量的增加,服務生態系統(及其架構)也會變得越來越復雜。這將給整個生態系統的設計、開發、部署、功能發布和維護方面帶來進一步復雜性和挑戰。
影響
(1)服務可能變得過于依賴其他服務或與其他服務過于耦合,從而在服務中人為地制造了不必要的架構分隔,這導致開發者難以真正理解系統架構并對其進行任何更改。
(2)隨著系統中活動部件(架構中的服務)的增加,維護系統的操作負擔也在增加。每個微服務都需要自己的基礎設施、指標和警報的維護和管理,從而給值班人員和團隊增加了運營負擔。
潛在的緩解策略
(1)明確服務的清晰定義和邊界。確保它們具有內聚性和功能限制。記住,不需要為每一個新的映射、每一個新配置或每一個系統將擁有的新實體構建一個新的服務。
(2)定期審查和審核架構,棄用不需要的服務。折疊或合并重復的服務以簡化架構。
2.功能發布的復雜性增加
由于微服務激增增加了更多的活動部件(也稱為服務),因此功能發布可能需要對相對較多的服務進行更改。這使功能發布過程變得復雜,因為功能需要在多個服務中進行部署。這增加了功能發布過程中失敗的風險,因為在一個服務中部署失敗可能會破壞整個功能發布過程,并可能導致其他影響(數據完整性、系統完整性等)。
影響
(1)增加了跨服務協調部署所需的復雜性和工作量,從而增加了操作開銷。
(2)復雜的回滾過程,特別是在服務相互依賴的情況下,導致操作開銷進一步增加。
(3)較長的發布計劃和回滾計劃可能導致系統處于過渡狀態的時間更長,從而導致行為不一致,進而導致客戶體驗不一致。
潛在的緩解策略
(1)在所有服務管道中遵循CI/CD原則,以自動化部署過程,并在管道之間安全地部署更改,確保發布的一致性和可靠性。
(2)當一個功能發布涉及多個服務時,使用功能標志將功能的啟動與部署解耦,并在其中涉及的服務中干凈地控制新功能的啟動。
3.性能下降
微服務激增可能會導致整個系統的性能下降,這主要是因為請求需要經過多個躍點,從而導致額外的網絡延遲。
影響
(1)第一個影響是服務客戶請求的延遲增加,主要是因為請求需要在多個系統之間進行交互。
(2)一個存在資源競爭或實現(或基礎設施)未優化的服務可能會影響整個服務生態系統。
(3)最后,考慮到維護系統的成本,這可能意味著更多的基礎設施成本和相對較少的性能收益。
潛在的緩解策略
(1)實現服務網格以優化服務之間的通信并減少延遲。然而,這給架構增加了另一個組件,并使其更加復雜。
(2)在必要時進行緩存,以減少網絡調用帶來的開銷和延遲。
(3)定期對服務進行負載測試,優化服務瓶頸。
4.重復
隨著新服務的創建,重復和冗余的特性和代碼的風險也隨之增加,從而導致資源的浪費。
影響
(1)重復的服務導致更高的維護成本,從而導致系統效率低下。
(2)服務的客戶可能會對使用哪個服務感到困惑,從而導致系統進一步的低效率和錯誤。
潛在的緩解策略
(1)在組織內提倡重用文化。只要可能,鼓勵團隊重用或擴展現有服務,而不是創建新服務。
(2)維護一個服務目錄,詳細說明每個服務的清晰定義、責任和支持的功能。在團隊內部定期審查和審核。
5.測試復雜性增加
隨著微服務數量的增長,功能端到端測試的復雜性也在增加。隨著系統中微服務的增加,維護數據和系統完整性變得越來越復雜。
影響
(1)跨多個服務協調和執行測試用例可能成為后勤上的噩夢,從而導致測試不完整,從而導致未檢測到的問題。
(2)測試單個服務需要付出更多的努力,因為它需要復雜的模擬設置,這可能無法準確地表示實際場景。
(3)在整個服務生態系統的端到端測試中需要付出更多的努力,因此需要更高的投資和成本來安全推出新功能。
潛在的緩解策略
(1)實現自動化測試框架,它可以模擬多個服務之間的復雜交互。
(2)進行分階段測試,首先測試單個服務,然后根據所涉及服務的接口對整個生態系統進行端到端測試。
6.機會成本增加和資源利用不佳
隨著微服務數量的增長,維護服務的成本、開發新功能的成本以及這些服務的基礎設施成本也在增加。它還增加了機會成本,因為用于維護這些服務或在這些服務之上進行構建的資源可以用于解決其他問題。
影響
(1)更高的開發、維護和基礎設施成本。
(2)更高的機會成本。
(3)浪費資源,因為團隊一直在維護現有的服務,而不是在解決其他問題上投入資源。
潛在的緩解策略
(1)提倡重用或擴展的文化,只在必要時構建新服務。
(2)定期檢查端到端架構,并進行實驗以發現瓶頸。合并或棄用服務以簡化架構,從而提高資源利用率。
結論
微服務激增是真實存在的,并帶來了巨大的挑戰,可能會破壞微服務架構的好處,從而導致復雜性的增加、性能的下降、資源利用率欠佳,以及錯失解決其他問題的機會。通過認識到這些陷阱并實現戰略性和有效的緩解措施,組織的團隊可以應對微服務激增的復雜性,從而確保他們利用這種架構模式的真正好處。
原文標題:Microservice Proliferation: Too Many Microservices,作者:Sumit Kumar