分支, 所作, 抽象, 模式 - AWS 規範指引

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

分支, 所作, 抽象, 模式

當您可以攔截整體周邊的呼叫時,絞殺程序無花果模式效果很好。不過,如果您想要將舊版應用程式堆疊中較深層次存在的元件進行現代化,並且具有上游相依性,我們建議您使用抽象模式來進行分支。此模式可讓您變更現有程式碼基底,讓現代化版本與舊版本一起安全地共存,而不會造成中斷。

要通過抽象模式成功使用分支,請按照以下過程進行操作:

  1. 識別具有上游依賴關係的整體組件。

  2. 創建一個抽象層,代表要現代化的代碼與其客戶之間的交互。

  3. 當抽象到位時,將現有客戶端更改為使用新的抽象。

  4. 使用整體之外的重新設計功能創建抽象的新實現。

  5. 準備好後,將抽象切換到新的實現。

  6. 當新實現為用戶提供所有必要的功能,並且整體不再使用時,請清理較舊的實現。

抽象模式的分支通常與功能切換混淆,這也允許您逐步更改系統。不同之處在於,功能切換的目的是允許開發新功能,並在系統運行時使用者看不到這些功能。因此,在部署時間或執行階段會使用功能切換,以選擇應用程式中是否可見特定功能或功能集。通過抽象分支是一種開發技術,可以與功能切換相結合,以在舊實現和新實現之間切換。

下表解釋了通過抽象模式使用分支的優點和缺點。

優點 缺點
  • 允許在出現任何問題時可以恢復的增量更改(向後兼容)。

  • 當您無法攔截整體邊緣對它的呼叫時,可讓您擷取位於巨體內部深處的功能。

  • 允許多個實現在軟件系統中共存。

  • 透過使用中繼驗證步驟來呼叫新功能和舊功能,提供簡單的方法來實作後援機制。

  • 支援持續交付,因為您的程式碼在整個重組階段都能隨時運作。

  • 如果涉及數據一致性,則不適合。

  • 需要對現有系統進行變更。

  • 可能會為開發過程增加更多的開銷,特別是如果代碼庫結構不佳。(在許多情況下,上行值得額外的努力,重組越大,考慮通過抽象模式使用分支就越重要。)

下圖顯示了通過抽象模式在保險整體通知組件的分支。它通過創建通知功能的抽象或接口開始。以小的增量,現有的客戶端被更改為使用新的抽象。這可能需要在代碼庫中搜索與通知組件相關的 API 的調用。您可以將通知功能的新實作建立為整體式外部的微服務,並將其裝載在現代化架構中。在您的整體式中,您新創建的抽象界面充當經紀人並調用新的實現。以小的增量,您可以將通知功能移植到新的實現中,該實現將保持非活動狀態,直到完全測試並準備就緒為止。當新實現準備就緒時,您可以切換抽象以使用它。您希望使用可以輕鬆翻轉的切換機制(例如功能切換),以便在遇到任何問題時可以輕鬆切換回舊功能。當新實現開始向您的用戶提供所有通知功能,並且整體不再使用時,您可以清理舊的實現並刪除可能已實現的任何切換功能標誌

通過抽象模式使用分支將巨石分解為微服務