Software Migration Patterns
1. Strangler Fig Pattern
Named after the Strangler Fig tree that slowly grows around and replaces a host tree.
Idea
Gradually replace parts of a legacy application with new services, piece by piece, while the old system continues running.
Instead of rewriting everything at once:
- New functionality → built as new services
- Existing modules → slowly migrated
- Traffic → incrementally routed to new components
Eventually the legacy system “dies naturally.”
Architecture Flow
Client | API Gateway / Proxy | ------------------------- | | Legacy Monolith New Microservices
The gateway decides:
- which requests go to old system
- which go to new services
Example
Suppose Oracle CPQ had:
- pricing
- approvals
- catalog
- reporting
You might:
- Keep monolith running
- Extract Reporting Service first
- Route reporting APIs to new service
- Later extract Pricing
- Continue until monolith disappears
Advantages
- Lower risk
- Incremental migration
- Easier rollback
- Business continuity
- Allows parallel teams
Disadvantages
- Temporary complexity
- Dual maintenance
- Requires routing layer/API gateway
- Data synchronization can be hard
Best Used When
- Large monolith
- Mission-critical systems
- Long-lived enterprise products
- Need zero/minimal downtime
2. Lift and Shift Pattern
Also called:
- Rehosting
- “Move as-is”
Idea
Move the application to cloud/infrastructure with minimal or no code changes.
Example:
- On-prem VM → AWS EC2
- Physical server → Kubernetes VM
- Datacenter → OCI/Azure/AWS
Application architecture remains mostly unchanged.
Example
A Java monolith running on:
- WebLogic
- Oracle DB
- on-prem servers
is simply moved to:
- OCI Compute
- cloud load balancer
- managed DB
without redesigning application logic.
Advantages
- Fast migration
- Low initial effort
- Minimal code changes
- Quick cloud adoption
Disadvantages
- Does not modernize architecture
- Existing problems remain
- Limited cloud benefits
- Higher operational cost long term
Best Used When
- Tight deadlines
- Datacenter exit
- Cloud-first mandates
- Legacy apps difficult to rewrite
3. Big Bang Migration Pattern
Idea
Entire system is replaced in one large release/cutover.
Old system is turned off.
New system becomes live immediately.
Example
Friday: Legacy ERP active Weekend: Data migration System cutover Monday: New ERP live Old system retired
Advantages
- Clean architecture
- No dual-system complexity
- Faster final state achievement
Disadvantages
- Extremely high risk
- Difficult rollback
- Requires huge testing effort
- Business disruption possible
- Long freeze periods
Best Used When
- Small systems
- Simple applications
- Startup environments
- When coexistence is impossible
Comparison Table
| Aspect | Strangler Fig | Lift & Shift | Big Bang |
|---|---|---|---|
| Migration Style | Incremental | Infrastructure move | Full replacement |
| Risk | Low-Medium | Low | Very High |
| Code Changes | Gradual | Minimal | Massive |
| Time to Cloud | Medium | Fast | Slow until cutover |
| Business Disruption | Minimal | Minimal | High |
| Complexity | Medium-High | Low | High |
| Rollback Ease | Easier | Easy | Difficult |
| Cloud Optimization | High eventually | Low | High |
| Best For | Enterprise modernization | Quick cloud migration | Small/simple systems |