Microservices 的興起,提高了 Service Mesh 的重要性。在開始學習 Service Mesh 之前,先來了解一下Microservices 吧!
所謂 Monolithic 是一種軟體開發架構,目標是將系統所需的所有元件整合到同一份程式裡,讓此應用程式不只處理單一任務,而是能負責所需的所有功能。以 Web Application 來說,Monolithic 設計方向就是將 Web 所需邏輯 (如 前端、後端)全部寫進同一份程式裡,最後打包起來就是一套擁有完整功能的系統。
Monolithic 如同霍爾的移動城堡,功能一體成形,但要除錯或擴充都會相當困難
Microservices 也是一種軟體開發架構,近幾年隨著容器技術的發展而逐漸流行,目標是將應用程式依據功能拆解成獨立元件,彼此透過 API 互相通訊。以 Web Application 來說, Microservices 設計方向就是將 Web 所需邏輯(如前端、後端)都拆解成獨立程式,互相使用 API 互相溝通,組合在一起即可成為完整的系統。
要說 Microservices 的缺點,主要是開發時需要注意的事項變多,畢竟如果 API 沒有定義清楚,或是元件拆分的方式不佳,都會導致整個系統產生很多問題,至於怎麼開發好 Microservices ,可以參考 The Twelve-Factor App,裡面列舉了 12 項開發時需遵守的規範。
Microservices 如同電腦的設計,由分散的元件組成完整服務。每個元件都有各自的接口,壞掉時可以替換,資源不夠時也能進行擴充
隨著容器技術的興起,部屬應用程式的難度下降很多,加上 Kubernetes 容器編排軟體的釋出,如何管理數個容器也不再是難題,不只能輕鬆擴展服務,也能很好整合 CI/CD 等 DevOps 工具。透過 Kubernetes 就能輕鬆建置 Microservices 環境,也讓 Microservices 逐漸取代 Monolithic 成為主流。
雖然 Kubernetes 與 Microservices 架構很契合,但在流量管理及可觀測性上原生 Kubernetes 還是稍嫌不足,這時就需要 Service Mesh 的幫忙,至於 Service Mesh 究竟是什麼?就留到下一篇再跟大家介紹。