微服務 microservices
定義
微服務是一種軟體開發的架構,可以把系統模組化,將功能拆分開來,會各自跑在獨立的環境中(通常會是容器),建立獨立的環境和資源,最後每個功能會提供 API 讓服務可以串起來。
舉例來說,像是 uber 叫車的 app,如果是傳統的單體架構(Monolithtic Architecture),會把所有功能寫在一起,包括 顯示 UI、叫車、查詢目前車輛、評分駕駛 等等,然後再用同個 server run。
但如果是微服務架構,就會把這些功能使用不同容器建立,然後每一個功能會提供 API 讓其他功能可以使用。
傳統單體架構的缺點
無模組化,可重用性低 : 如果有其他系統有需要用到這個系統其中一個功能,就沒有辦法快速地建出這個功能,因為要還原部屬的環境較麻煩。以上面來說,如果有其他的系統也要用查詢目前車輛狀況的功能,就沒辦法快速建立這個服務。
除此之外,若是此功能部屬在多個不同的系統上,當此功能的效能有問題或是有 bug,就會需要重構(refactor)此功能,就會相對困難。重構 : 保留原本的功能,改進有問題的部份。
以上面來說,如果有其他的系統也要用到查詢目前車輛的功能,若今天這個功能有 bug,就要分別去多個不同的 server 更新這個功能。