身為開發人員,近幾年大家應該很熟悉"微服務",就算沒有去使用過的人也因該有聽過這名詞,它與傳統的設計架是有何不同。那麼什麼是微服務。
傳統程式設計概念-多半採用單體式架構,是將所有功能設計在同一個進程來運行,主要是一個應用程並且使用像主從式架構 (Client/Server) 或是多層次架構 (N-tier) 實作,但是在單體式架構下,往往修改一個小功能,就有可能影響到正在運行的系統,因為每個業務是不可分割。單體式架構當系統loading拉高,但由於不可分割的特性,通常解決方式是擴充或升級硬體,避免重新開發系統。
微服務運用了以業務功能的設計概念,在設計時會以業務功能或流程設計來分割,使各個功能都是最小可獨立運作的服務,然後透過通訊協定將各個獨立服務組合起來,形成一個應程式。若需針對業務功能進行擴充時,會更易於建構、測試、部署和更新。
導入微服務也並不是全部都是好處,微服務會為系統帶來高複雜度,會讓運維的工作變的更加複雜,因此如何降低運維的工作是一種挑戰,因此運維的過程的如何自動化,在微服務架構就越顯得重要。
微服務的特性
每個服務都容易被取代,可以專注於單一的業務功能。
每個不同服務可以交由不同的團隊獨立開發。
微服務可以通過不同的程式語言與工具進行開發。