# 微服務架構設計 - 扼殺人 Strangler Pattern


# Stranlger Pattern Introduction

Strangler Pattern 是用於達成從 單體式 轉變成 微服務 架構的遷移設計模式,其中 Strangler Pattern 涉及取代一些單體式 App 到微服務的內容。

其中 Strangler Pattern 的實施包含三個步驟

  1. Transform 轉變
  2. Co-exists 共存
  3. Eliminate 除去

# Strangler Patter 使用案例

Strangler Pattern 用於單體式 App 轉變成微服務時使用,事實證實了當系統重寫會帶來重大的風險與中斷,但是有益處的,特別是適合擁有複雜 CodebasesLegacy System 對於 Refactor 全面系統困難的時候。


# Strangler Pattern 特色

  • 逐步遷移
    • 可以讓 單體式 App 一步一步的遷移到 微服務 可以讓組織逐漸的替代特定的功能或是模組
  • 共存
    • 當在遷移過程, 單體式 App 與 微服務 共存,確保系統功能不中斷
  • 扼殺行為
    • Strangler Pattern 逐漸替代元件或模組最終導向替換掉 Legacy System

# 實踐 Strangler Pattern

這邊以電子商務單體式應用程式作為範例

  1. 確任 訂單管理功能 在單體式 App 內
  2. 建立 訂單管理微服務
  3. 設置 API Gateway 去導向 訂單管理請求 到微服務
  4. 遷移單體式 App 的特定功能到微服務
  5. 重複上述 1~4 的步驟直到完全取代 Legacy System

# Strangler Pattern 優缺點


# Strangler Pattern 優點

  1. 逐步遷移
  2. 彈性
  3. 共存

# Strangler Pattern 缺點

  1. 複雜
  2. 資料一致性
  3. 增加網路呼叫
  4. 依賴管理問題

# 甚麼樣的元件應該先被 Strangled [扼殺] 或是 Refactored [重構]

  • 直觀且安全的元件 (在不熟悉 Strabgler Pattern 的情況)
  • 擁有高測試覆蓋率與低技術負債的元件 (給予團隊遷移信心)
  • 有擴展需求的雲端元件
  • 因商業需求而頻繁佈署元件,但又不想重新佈署所有元件時
  • 當你有遷移到雲端的障礙時,Stranlger 可以幫助你低風險且順暢的完成
  • 需要藉由減少應用程式複雜度達到更快速的提供業務功能,如果搭配 CI/CD 能夠更順暢的從單體轉變到微服務

# 參考資料

  • Strangler Pattern in Micro-services | System Design
更新於