Modernizing a Zend monolith without breaking revenue
Strangler pattern, events, queues, and a team that can't stop for a week. Our strategy on an 8-figure eCommerce.
The client does eight figures a year on a Zend Framework 1 monolith no one has touched in eight years. The in-house team knows the code but can't stop for a week to rewrite it. Service in production 24/7, peaks on weekends.
We applied the strangler pattern: the monolith stays, but every new feature is born outside of it. A gateway in front routes calls to the old or the new based on the route. No big bang, only gradual migration module by module.
Events and queues (Redis + Laravel Horizon) decouple heavy processes — billing, marketplace sync, transactional emails. The monolith writes an event, the new stack consumes it. If something breaks, the monolith keeps selling.
The most critical module — checkout — was the last to be migrated, after a year of work on the edges. Feature flags, canary release on 1% of traffic, instant rollback. Zero downtime, zero lost orders.
Lesson: modernization is not a migration, it's a long cohabitation. Anyone promising to rewrite everything in three months has never seen serious legacy.
Every signal comes from a real project.