絞殺者模式(Strangler Pattern)是一種非常流行的從單體系統向微服務遷移的政策,其主張通過用新服務替換特定功能來将單體系統逐漸轉換為微服務,一旦新服務已經能夠代替原有舊有功能,就将原有功能元件絞殺(即徹底停用)。
基于絞殺者模式将單體系統拆分為微服務的時候,任何新的開發都應該作為新服務的一部分,而不是單體系統,這保證了新的開發領域的代碼具有較高的品質。建議在編寫業務邏輯時遵循測試驅動開發(Test-Driven Development, TDD),并将SonarQube與部署管道內建,以避免産生任何技術債務。
借助絞殺者模式從單體系統向微服務系統遷移可以大緻簡化為三個步驟,即轉化、共存和消亡。
簡而言之,就是開發一個新元件(即微服務),讓新組建和舊元件共存一段時間,最終消除舊元件。大緻步驟如下:- 最初,所有通路應用的流量都路由到舊版系統。
- 建構新元件後,可以對單體系統代碼與新功能一起進行測試。
- 單體系統和新元件需要共同運作一段時間,這段過渡時間可能會較長。
- 對新元件進行增量開發和測試後,可以完全停用舊的單體系統。
如何選擇首先要絞殺/重構的元件?
- 如果您是首次使用絞殺者模式,并且之前對這種模式并不是非常熟悉,此時建議從絞殺簡單的元件開始嘗試,這樣一來也為絞殺複雜元件提供了知識儲備和最佳實踐。
- 如果某個元件的測試覆寫率較高,并且相關的技術債務較少,那麼可以考慮從該元件開始較少,這樣易于幫助團隊建立信心。
- 如果某些元件對于可伸縮性具有較高的要求,可以從這些元件之一開始。
- 如果某個元件的業務需求比較頻繁而需要定期部署,則可以從該元件開始。這将降低單體系統重新部署的頻率,并且便于對于需求變更較為頻繁的元件進行獨立擴充和部署。