Problem
So far, the design patterns we talked about were decomposing applications for greenfield, but 80% of the work we do is with brownfield applications, which are big, monolithic applications.
Applying all the above design patterns to them will be difficult because breaking them into smaller pieces at the same time it's being used live is a big task.
Solution
The Strangler pattern comes to the rescue. The Strangler pattern is based on an analogy to a vine that strangles a tree that it’s wrapped around.
This solution works well with web applications, where a call goes back and forth, and for each URI call, a service can be broken into different domains and hosted as separate services. The idea is to do it one domain at a time.
This creates two separate applications that live side by side in the same URI space. Eventually, the newly refactored application “strangles” or replaces the original application until finally, you can shut off the monolithic application.
The strangler application consists of two types of services. First, there are services that implement functionality that previously resided in the monolith.
Second, there are services that implement new features. The latter are particularly useful since they demonstrate to the business the value of using microservices.