iT邦幫忙

2022 iThome 鐵人賽

DAY 2
1
DevOps

學會 Kubernetes 然後呢?由 Istio 進入 DevOps 偉大航路系列 第 2

Day02 - 雲原生架構主流,微服務(Microservices)介紹

  • 分享至 

  • xImage
  •  

前言

Microservices 的興起,提高了 Service Mesh 的重要性。在開始學習 Service Mesh 之前,先來了解一下Microservices 吧!

什麼是單體式架構 (Monolithic Architecture)

所謂 Monolithic 是一種軟體開發架構,目標是將系統所需的所有元件整合到同一份程式裡,讓此應用程式不只處理單一任務,而是能負責所需的所有功能。以 Web Application 來說,Monolithic 設計方向就是將 Web 所需邏輯 (如 前端、後端)全部寫進同一份程式裡,最後打包起來就是一套擁有完整功能的系統。

https://ithelp.ithome.com.tw/upload/images/20220911/20139235ZwmMNwIkt4.jpg

圖片取至 https://microservices.io/patterns/monolithic.html

Monolithic 優點

  • 易於部屬: 只需部屬一份執行檔就能運作
  • 設計簡單: 功能都寫在同一份程式,不用思考各元件交互的方式
  • 早期開發成本低: 學習成本低,上手快,適合小規模開發團隊

Monolithic 缺點

  • 後期開發成本高: 程式碼龐大,要除錯、新增功能都會十分複雜
  • 程式碼依賴性高: 都使用同一種程式語言開發, 提高對語言的依賴性
  • 擴展服務困難: 單一功能遇到瓶頸,只能對整個應用程式擴展

https://ithelp.ithome.com.tw/upload/images/20220910/20139235pc2kNPDZpw.jpg

Monolithic 如同霍爾的移動城堡,功能一體成形,但要除錯或擴充都會相當困難

什麼是微服務架構 (Microservices Architecture)

Microservices 也是一種軟體開發架構,近幾年隨著容器技術的發展而逐漸流行,目標是將應用程式依據功能拆解成獨立元件,彼此透過 API 互相通訊。以 Web Application 來說, Microservices 設計方向就是將 Web 所需邏輯(如前端、後端)都拆解成獨立程式,互相使用 API 互相溝通,組合在一起即可成為完整的系統。

https://ithelp.ithome.com.tw/upload/images/20220911/20139235z61mtZC07Y.png

圖片取至 https://microservices.io/patterns/microservices.html

Microservices 優點

  • 故障風險降低: 功能獨立運作,若其中一項服務故障,系統也不會全面停擺
  • 易於平行擴展: 可根據個別功能調整資源,以滿足應用程式需求
  • 開發自由度高: 每個功能都是彼此獨立,可使用不同程式語言開發

Microservices 缺點

要說 Microservices 的缺點,主要是開發時需要注意的事項變多,畢竟如果 API 沒有定義清楚,或是元件拆分的方式不佳,都會導致整個系統產生很多問題,至於怎麼開發好 Microservices ,可以參考 The Twelve-Factor App,裡面列舉了 12 項開發時需遵守的規範。

https://ithelp.ithome.com.tw/upload/images/20220911/201392350Q31I9h8ve.jpg

Microservices 如同電腦的設計,由分散的元件組成完整服務。每個元件都有各自的接口,壞掉時可以替換,資源不夠時也能進行擴充

Kubernetes 與 Microservices 之關係

隨著容器技術的興起,部屬應用程式的難度下降很多,加上 Kubernetes 容器編排軟體的釋出,如何管理數個容器也不再是難題,不只能輕鬆擴展服務,也能很好整合 CI/CD 等 DevOps 工具。透過 Kubernetes 就能輕鬆建置 Microservices 環境,也讓 Microservices 逐漸取代 Monolithic 成為主流。

雖然 Kubernetes 與 Microservices 架構很契合,但在流量管理及可觀測性上原生 Kubernetes 還是稍嫌不足,這時就需要 Service Mesh 的幫忙,至於 Service Mesh 究竟是什麼?就留到下一篇再跟大家介紹。


上一篇
Day01 - 要玩轉 DevOps,僅學會 Kubernetes 是不足的
下一篇
Day03 - 強化 Kubernetes 的秘方,服務網格(Service Mesh)介紹
系列文
學會 Kubernetes 然後呢?由 Istio 進入 DevOps 偉大航路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言