06.04 微服務與軟件架構師,以及微服務架構應用具備的特性

微服務架構(Microservice Architecture)是一種架構概念,旨在通過將功能分解到各個離散的服務中以實現對解決方案的解耦。你可以將其看作是在架構層次而非獲取服務的類上應用很多SOLID原則。微服務架構是個很有趣的概念,它的主要作用是將功能分解到離散的各個服務當中,從而降低系統的耦合性,並提供更加靈活的服務支持。

微服務與軟件架構師,以及微服務架構應用具備的特性

今天看來,傳統的軟件開發(尤其是應用型軟件開發)其實是相對簡單的。軟件運行在基本可靠的單機環境下:CPU 提供計算能力,內存提供動態存儲,總線提供數據傳輸,硬盤提供永久存儲。這些概念穩定而直觀,程序員要完成的,就是調用和組裝編程語言提供的各種功能,來滿足現實的需求。相比應用程序員良莠不齊的開發水平,無論是操作系統還是硬件環境,都是來自大公司的工業級別的產品,是值得信賴的。

微服務與軟件架構師,以及微服務架構應用具備的特性

如果把程序要完成的功能比作個人,軟件運行的環境比作房屋,那麼房屋雖小,卻是值得信賴的。對個人來說,只要進去了房屋裡,就有相對穩定的環境,相比野外生存就是巨大的進步。當然,如果遇到意外情況,在野外可能生存機會大一點,在房屋裡只能與房子“一損俱損”了。

微服務架構有以下的一些通用特性,但並非所有微服務架構應用都必須具備所有這些特性:

微服務與軟件架構師,以及微服務架構應用具備的特性

通過服務實現應用的組件化(Componentizationvia Services):微服務架構中將組件定義為可被獨立替換和升級的軟件單元,在應用架構設計中通過將整體應用切分成可獨立部署及升級的微服務方式進行組件化設計。

微服務與軟件架構師,以及微服務架構應用具備的特性

圍繞業務能力組織服務(Organizedaround Business Capabilities):微服務架構採取以業務能力為出發點組織服務的策略,因此微服務團隊的組織結構必須是跨功能的(如:既管應用,也管數據庫)、強搭配的DevOps開發運維一體化團隊,通常這些團隊不會太大(如:亞馬遜的“Two pizzateam”- 不超過12人)。

微服務與軟件架構師,以及微服務架構應用具備的特性

產品而非項目模式(Productsnot Projects):傳統的應用模式是一個團隊以項目模式開發完整的應用,開發完成後就交付給運維團隊負責維護;微服務架構則倡導一個團隊應該如開發產品般負責一個“微服務”完整的生命週期,倡導“誰開發,誰運營”的開發運維一體化方法。


分享到:


相關文章: