D16Next

介紹下一個世代的數據虛擬化技術 (Data Virtualization - D16N),與數據處理、雲端相關技術

什麼是 Microservices?以及優勢劣勢為何?

03 November 2019

- Canner, Inc.

Microservices 是近幾年在軟體設計上很重要的趨勢,跟以往的 Monolithic 的架構相比他是非常不一樣的設計思維。為什麼 Microservices 近幾年會受到這麼大的重視,很大一部份是因為雲端供應商的大力推廣,您所常見到的 AWS, Google Cloud Platfrom 以及 Azure 都是 Microservices 的架構而設計。

讓我們來更進一步了解為什麼 Microservices 是現今的主流,以及他改變了什麼軟體上設計的思維呢?

什麼是 Microservices?

Microservices 最大的設計概念就是,把每個小部分可以獨立的服務以及功能讓他能夠獨立運算以及運作,當要用時透過 HTTP 或是 TCP 等 protocal 進行溝通,以下為一些 Microservices 的理念:

  1. 標準化服務
  2. 耦合性弱:讓每個服務可獨立運作
  3. 讓服務抽象化:把所有內部運作隱藏起來,變成一個標準介面供使用者使用
  4. 服務組合性強:由於服務每個都是獨立運作,所以他們有介面可以讓他們互相能夠溝通以及組合。
  5. 獨立性強:他們可以各自獨立。

以下為 Microservices 與傳統的 Monolithic 架構的差異:

Source

Microservices 最常見,也是最標準的範例就是雲端運算的供應商。

讓我們來看看以下 AWS, Google Cloud Provider 以及 Azure 他們所提供的服務地圖吧!

Image result for aws services 2019

AWS 的服務

Image result for gcp services 2019

Google Cloud Platform

Image result for azure services 2019

Azure

每一個 Cloud 供應商,都有提供非常完善的整個生態,而且每個服務都是根據 Microservices 的概念去做開發,也就是讓每個專案的耦合性低,可以獨立運作且要整合服務以及溝通上都是容易。

現在有許多企業都開始提倡 Microservices ,也是這些雲端供應商的龍頭不斷的推廣這個概念,使得越來越多組織和團隊都接受這樣的框架!你可以使用不同供應商部分的服務 Microservices 來組合成你自己想要的應用。

Microservices 的優勢

最大的好處就是團隊可以很自由的開發、擴充、維護、發布,每一個 Microservices 都是獨立的,所以不用擔心一個 service 設定錯了會影響其他服務的運行。您如果用過雲端供應商的服務,就了解現在要使用一個 service 是多麼簡單,一個按鍵即可開始使用。

Microservices 的優勢如下:

  1. 更快速的開發
  2. 更快地能夠把產品推到市場
  3. 服務獨立:不用擔心一個錯誤會影響到者個產品
  4. 容易擴充服務規格:可以依照單一的服務需求做擴充
  5. 容易擴充功能:當企業有更多業務的時候,可以馬上開啟一個新的 service 進行擴充。

Microservices 的劣勢

每個新的架構,不可能完美,有優勢也會有劣勢的地方。那 Microservices 的劣勢為何呢?

Microservices 的劣勢如下:

  1. 設定複雜:由於每個服務都獨立開來在不同的介面中,當您混合更多服務時在維護上會越來越複雜。
  2. 學習曲線高:現在使用 Microservices 通常都會直接使用雲端供應商的服務,所以除了原本要學習的系統以及程式語言外,還要學習這些雲端服務的限制以及設定,有時候非常複雜。
  3. 錯誤維護:由於每個服務都是各自獨立,所以再有錯誤的時候可能會是在 Network 或是在流量上的控制都要去設定以及維護。
  4. 難以做測試:因為每個發佈都是在雲端服務,所以使得要用更進一步的 script 或是開發流程確保所有環境運作正常。

結論

Microservices 必定是未來,尤其是有 Amazon, Google, Azure 這些雲端供應商大力推廣以及教育的情況下,越來越多個人以及企業會擁抱 Microservices 的框架!