Strangler fig pattern: Difference between revisions

Content deleted Content added
wl
top: Fowler coined the name, but did not invent the technique
Tags: Mobile edit Mobile app edit Android app edit App full source
 
(16 intermediate revisions by 10 users not shown)
Line 1:
{{Short description|Computer science architectural pattern}}
In programming, the '''strangler fig pattern''' or '''strangler pattern''' is an [[architectural pattern]] that involves wrapping old code, with the intent of redirecting it to newer code or to log uses of the old code. Coined by [[Martin Fowler (software engineer)|Martin Fowler]],<ref name=":0" /> its name derives from the [[strangler fig]] plant, which tends to grow on trees and eventually kill them. It has also been called '''Ship of Theseus''' pattern, named after [[Ship of Theseus|a philosophical paradox]].<ref>{{ cite web |website=Understand Legacy Code |title=The Ship of Theseus to NOT rewrite a legacy system from scratch |first=Nicolas |last=Carlo |url=https://understandlegacycode.com/blog/ship-of-theseus-avoid-rewrite-legacy-system/}} </ref>
In programming, the '''strangler fig pattern''' or '''strangler pattern''' is a [[software design pattern]] that involves wrapping old code.
 
One use of thisThe pattern is software rewrites. Code can be dividedused into many small sections, wrapped withat the strangler[[Method fig(computer pattern, then that section of old code can be swapped out with new code before movingprogramming)|method]] onlevel toor the next[[Class section.(computer This is much less risky and more incremental than swapping out the entire piece ofprogramming)|class]] softwarelevel.<ref name=":0">{{Cite book |last=NewmanSeemann |first=SamMark |title=MonolithCode toThat Microservices:Fits Evolutionaryin PatternsYour toHead: TransformHeuristics Yourfor Software MonolithEngineering |publisher=[[O'Reilly MediaAddison-Wesley]] |year=20202022 |isbn=978-10-49213-07554746440-71 |pages=79–97228–237}}</ref>
 
== Rewrites ==
Another use of this pattern is the addition of logging to old code. For example, logging can be used to see how frequently the code is used in production, which can be used to decide whether to delete low-usage code, or to rewrite high-usage code.<ref>{{Cite book |title=Five Lines of Code: How and when to refactor |publisher=[[Manning Publications]] |year=2021 |isbn=9781617298318 |pages=206–208}}</ref>
One use of this pattern is during software rewrites. Code can be divided into many small sections, wrapped with the strangler fig pattern, then that section of old code can be swapped out with new code before moving on to the next section. This is less risky and more incremental than swapping out the entire piece of software.<ref name=":0">{{Cite book |last=Newman |first=Sam |title=Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith |publisher=[[O'Reilly Media]] |year=2020 |isbn=978-1-492-07554-7 |pages=79–97}}</ref>
 
The strangler fig pattern can be used on [[monolithic application]]s to migrate them to a [[microservices]] architecture.<ref name=":0" /><ref>{{cite web |last1=Behara |first1=Samir |date=12 December 2018 |title=Monolith to Microservices With the Strangler Pattern |url=https://dzone.com/articles/monolith-to-microservices-with-the-strangler-patte |access-date=12 March 2024 |website=DZone}}</ref>
[[Martin Fowler (software engineer)|Martin Fowler]] created this pattern.<ref name=":0" /> Its name derives from the [[strangler fig]] plant, which tends to grow on trees and eventually kill them.
 
== Logging ==
The strangler fig pattern tends to be used on [[monolithic application]]s, and it can be used to migrate to [[microservices]].<ref name=":0" /> The pattern can be used at the [[Method (computer programming)|method]] level or the [[Class (computer programming)|class]] level.<ref>{{Cite book |last=Seemann |first=Mark |title=Code That Fits in Your Head: Heuristics for Software Engineering |publisher=[[Addison-Wesley]] |year=2022 |isbn=978-0-13-746440-1 |pages=228–237}}</ref>
Another use of this pattern is the addition of logging to old code. For example, logging can be used to see how frequently the code is used in production, which can be used to decide whether to delete low-usage code, or to rewrite high-usage code.<ref>{{Cite book |last=Clausen |first=Christian |title=Five Lines of Code: How and when to refactor |publisher=[[Manning Publications]] |year=2021 |isbn=9781617298318 |pages=206–208}}</ref>
 
== See also ==
* [[List of software architecture styles and patterns]]
 
== External links ==
* https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig
* https://martinfowler.com/bliki/StranglerFigApplication.html
 
== References ==
{{Reflist}}
 
 
{{Comp-sci-stub}}
 
{{Uncategorized stub|date=January 2024}}
[[Category:Software design patterns]]