What if you could upgrade your whole system without breaking it or stopping users?
Why Strangler fig pattern in Microservices? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you have a big old software system that everyone depends on. You want to add new features or fix problems, but changing the old system is risky and slow. Every change might break something else, and the whole team waits for long testing cycles.
Trying to rewrite or fix the entire system at once is like rebuilding a house while living inside it. It takes too long, causes many errors, and users get frustrated with downtime or bugs. The team feels stuck, unable to move fast or improve smoothly.
The Strangler fig pattern helps by letting you replace parts of the old system little by little. You build new features outside the old system and slowly redirect users to the new parts. Over time, the old system 'dies off' naturally, without big risks or downtime.
Rewrite entire system in one go
// Big risky deployment
// Long downtimeBuild new service Redirect some requests Gradually replace old parts
This pattern enables smooth, safe upgrades and faster innovation without stopping the whole system.
A company moves from a monolithic app to microservices by slowly replacing user login, then payments, then profiles, each as separate services, without shutting down the app.
Big rewrites are risky and slow.
Strangler fig pattern replaces parts gradually.
It allows safe, continuous improvement.
Practice
Strangler fig pattern in microservices architecture?Solution
Step 1: Understand the pattern's purpose
The Strangler fig pattern is designed to replace legacy systems gradually, not all at once.Step 2: Compare options with the pattern goal
To gradually replace parts of a legacy system with new services matches the gradual replacement approach, while others describe different strategies.Final Answer:
To gradually replace parts of a legacy system with new services -> Option DQuick Check:
Gradual replacement = B [OK]
- Thinking it replaces the whole system at once
- Confusing it with parallel running without integration
- Assuming it merges services into one
Solution
Step 1: Identify routing strategy in Strangler fig
The pattern routes requests gradually from old to new components, not all at once or randomly.Step 2: Match options with routing approach
Route requests step-by-step from the legacy system to new microservices describes step-by-step routing, which fits the pattern best.Final Answer:
Route requests step-by-step from the legacy system to new microservices -> Option CQuick Check:
Step-by-step routing = A [OK]
- Routing all requests to legacy until full switch
- Routing requests randomly causing inconsistency
- Stopping legacy before new system ready
Legacy system handles requests for features A, B, C. New microservice replaces feature A. Requests for A go to new service; B and C go to legacy. What happens when a request for feature B arrives?
Solution
Step 1: Analyze routing rules for features
Only feature A is replaced by the new microservice; B and C remain in legacy.Step 2: Determine routing for feature B request
Requests for B still go to legacy system as it is not replaced yet.Final Answer:
It is routed to the legacy system since B is not replaced yet -> Option BQuick Check:
Feature B not replaced = legacy route = C [OK]
- Routing all requests to new service regardless of feature
- Assuming missing features cause errors
- Dropping requests instead of routing properly
Solution
Step 1: Identify issue with premature routing
Routing all requests early means new service may not handle all features yet.Step 2: Understand impact on system behavior
This causes inconsistent or failed responses for unsupported features.Final Answer:
It leads to inconsistent behavior as new service lacks some features -> Option AQuick Check:
Premature routing = inconsistent behavior = A [OK]
- Thinking early routing improves performance always
- Assuming legacy can be stopped immediately
- Ignoring feature support gaps
Solution
Step 1: Prioritize critical feature migration
Feature X requires zero downtime, so migrate it first carefully.Step 2: Apply gradual routing for feature X only
Route requests for X to new microservice while Y and Z remain on legacy to reduce risk.Step 3: Avoid full switch or stopping legacy abruptly
The other options risk downtime or complexity by switching all features at once.Final Answer:
Replace feature X first with a new microservice and route only X requests there, keep Y and Z on legacy -> Option AQuick Check:
Gradual critical feature migration = D [OK]
- Trying to replace all features at once
- Stopping legacy before new system ready
- Delaying critical feature migration
