絞殺無花果模式 - AWS 規範指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

絞殺無花果模式

到目前為止,本指南中討論的設計模式適用於分解綠地項目的應用。那麼涉及大型整體應用的棕地項目呢? 將先前的設計模式應用於它們將很困難,因為在積極使用時將它們分成較小的部分是一項艱鉅的任務。

絞殺無花果圖案是由馬丁·福勒(Martin Fowler)引入的流行設計圖案,該圖案受到某種類型的無花果的啟發,該無花果本身在樹木的上部樹枝中種子。現有的樹最初成為新圖的支撐結構。 然後,無花果將其根部發送到地上,逐漸包裹著原始的樹木,只留下新的,自支撐的無花果在它的位置。

這種模式通常用於通過用新服務替換特定功能,以增量方式將整體應用程序轉換為微服務。我們的目標是讓舊版和新的現代化版本共存。新系統最初由現有系統支援並包裝。這種支持使新系統有時間成長,並可能完全取代舊系統。

通過實現扼殺程序圖案從整體應用程序轉換到微服務的過程包括三個步驟:轉換,共存和消除:

  • 轉換 — 透過與舊版應用程式 parallel 移植或重寫元件,識別並建立現代化的元件。

  • 共存 — 保留整體應用程式以進行復原。在整體式的周邊加入 HTTP 代理伺服器 (例如 Amazon API Gateway),以攔截外部系統呼叫,並將流量重新導向至現代化版本。這可協助您逐步實作功能。

  • 消除 — 當流量從傳統整體重定向到現代化服務時,將舊功能從整體式退出。

AWS Migration Hub Refactor Spaces是增量應用程序重構到微服務的起點AWS。重構空間提供了一個應用程序,該應用程序將絞殺程序圖案模式進行增量重構。重構 Spaces 應用程式會協調 API Gateway、Network Load Balancer 和資源型AWS Identity and Access Management (IAM) 政策,讓您可以透明地將新服務新增至外部 HTTP 端點。

下表解釋了使用絞殺程序圖案的優缺點。

優點 缺點
  • 允許從服務正常遷移到一或多個替換服務。

  • 在重構到更新版本時保持舊服務發揮作用。

  • 提供在重構舊服務時添加新服務和功能的功能。

  • 該模式可用於版本化 API。

  • 此模式可用於未升級或不會升級之解決方案的舊版互動。

  • 不適用於複雜性低且尺寸較小的小型系統。

  • 無法用於無法攔截和路由傳送對後端系統的要求的系統。

  • 代理或外觀層可能會成為單點故障或性能瓶頸,如果設計不正確。

  • 需要為每個重構服務制定回滾計劃,以便在事情出錯時快速安全地恢復到舊的方式。

下圖顯示了如何通過將扼殺程序圖案應用於應用程序體系結構來將整體式分割為微服務。這兩個系統 parallel 運作,但是您將開始將功能移到整體代碼庫之外,並使用新功能對其進行增強。這些新功能讓您有機會以最適合您需求的方式建構微服務。您將繼續從整體式中剝離功能,直到它全部被微服務取代為止。此時,您可以消除整體應用。這裡要注意的關鍵點是,整體式和微服務都會共同生活一段時間。

通過使用絞殺無花果模式將巨石分解為微服務