iT邦幫忙

1

Microservice Pattern 犧牲了什麼?

  • 分享至 

  • xImage
  •  

軟體工程Microservice 是目前非常流行的 Architecture Pattern ( 應用程式會拆分成多個 service 聯合運行,通常會透過 RPC call 進行交互 ),進而推動的 Distrubution System 相關知識在Backend 領域中越來越顯得重要。延伸的主題,Event Driven, Event sourcing, Distribution lock....
other articles
只是 Mocroservice 的缺點也是顯而易見的,以下缺點都是相對於 monolithic 架構:

  1. Performance issue
    • 相對於 monolithic 架構(全部寫在同一個application),會增加網路傳輸的物理時間以及加密解密封包的效能損耗
  2. Development Speed
    • 由於一個 Application 切成幾個區塊(services)進行開發,同時 scripts 行數會變多,需要考慮到分散式系統的各種 issue. ex: Transaction atomicity issue
  3. Management Service
    • Deployment issue: 因為多增加了 Services ,因此需要部署跟設定的步驟也會隨之變多。
    • Indepenccy Service issue: 個服務的相依性容易造成系統修改不易。

Evaluation

最後結果為 Monolithic 的實作方式,可以增加 15倍左右的效率
實驗參數:

  1. GKE(Google Kubernetes Engine) K8s,並開啟 Auto-sacling Rescurces
  2. Comparision
    1. Monolithic
      • component 之間的傳輸,以 Unix PIPE 取代 RPC Call,即 [3] 專案,是以 [2] 專案為基礎進行開發
      • 實作語言 GO
    2. Microserivce
      • component 之間的傳輸以 gRPC,且有 11 個 services 交互運行,即參考資料的 [2] 專案
      • 實作語言 GO
Metric Monolithic Microservice
QPS 10000 10000
Avg of CPU Cores 28 78
Latency (ms) 2.66 5.47

結語

Microservice Pattern 是以 Service 為單位將大型 Application 進行拆分,會產生管理上的難度以及物理上所造成的效能缺失,文章中所提到的實驗有15 倍以上的差異。
而 Microservice 所帶來的好處是非常顯而易見的:

  1. Easy handle single service failed
  2. Easy parallel develop in cross-team
  3. Easy scalling up for specific services
    因此 Microservice 不是一個不好的 pattern ,而是思考這樣的架構是否合適。

Reference

[1] Ghemawat, Sanjay, et al. "Towards modern development of cloud applications." Proceedings of the 19th Workshop on Hot Topics in Operating Systems. 2023.
[2] Online boutique. https://github.com/GoogleCloudPlatform/ microservices-demo, 2023.
[3] github.com/ServiceWeaver,2023


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言