Strangler重寫模式

banq發表於2019-02-10

來自Martin Fowler推薦的模式,這是描述重寫一個重要系統的方法,Strangler是一種漸進的重寫模式,而不是一刀切全部重寫釋出新版本:

當Cindy和我去澳大利亞時,我們在昆士蘭海岸的雨林中度過了一段時間。這個地區的自然奇觀之一是巨大的Strangler藤蔓。它們生長在無花果樹的上部分樹枝,會逐漸沿著樹木向下移動,直到它們在土壤中生根,多年來,他們成長為奇妙而美麗的形狀,同時扼殺和殺死它們寄生的主人樹。

我的職業生涯大部分都涉及系統的重寫。你會認為這樣的事情很容易 ,然而,它們總是比它們表面上複雜得多,而且充滿了風險,交付日期迫在眉睫,壓力仍然存在。雖然新功能(總有新功能)很受歡迎,但舊功能必須保留。甚至經常需要將舊錯誤新增到重寫的系統中。

另一種方法是逐步在舊的邊緣建立一個新系統,讓它在幾年內緩慢增長,直到舊系統被勒死(Strangler的意思是扼殺勒死)。

這樣做聽起來很難,但我越來越認為這是運作良好的基本策略。

我的同事克里斯史蒂文森 最近參與了一個專案,取得了很大的成功。他們在XP 2004上發表了關於此的第一篇論文,我希望能有更多描述這個專案的更多方面。它們尚未處於舊應用程式被勒死的程度 - 但它們為業務提供了有價值的功能,使團隊更有信心。即使他們現在停止,他們也有巨大的投資回報 - 這比許多切換重寫都要多。

考慮Strangler模式而不是一刀切的重寫的最重要原因是降低了風險。Strangler可以穩定地提供價值,頻繁的釋出使您可以更仔細地監控其進度。許多人仍然不採用Strangler,因為他們認為會花費更多 - 我不相信這一點。由於您可以使用較短的釋出週期,因此可以避免許多不必要的功能,這些功能可以減少重寫次數。

這裡有另一個重要的想法 - 在設計新應用程式時,您應該設計它以便在將來更容易被勒死。讓我們面對現實,我們所做的就是今天編寫明天的遺留軟體。透過讓將來很容易被勒死,你可以讓今天的工作更加優雅。

相關文章