Majorelle Interiors
Upgraded from an ageing Magento 2 build to 2.4.8, migrated off Nexcess to Cloudways, and cut TTFB by nearly half — with zero downtime on cutover.
What needed solving
Majorelle Interiors sell luxury bathroom fittings (Lefroy Brooks, Vola, Drummonds) — high-AOV, considered purchases where site speed and trust matter materially. Their Magento 2 store was on an older version, with hosting on Nexcess that was both expensive and increasingly creaky under catalogue and checkout traffic.
The upgrade had been deferred for two years. Extension drift was significant — half a dozen modules were no longer maintained by their vendors. PHP 7.4 had been end-of-life for over a year. Composer dependency resolution was failing on the build server.
The brief was: get to the latest 2.4.x line, move to faster and cheaper hosting, and don't break the Lefroy Brooks pricing logic that the team rely on daily.
How the team worked through it
Compatibility audit, extension by extension
Catalogued every installed module — 38 in total. Eight needed replacing (vendor abandoned or incompatible). Three were doing nothing useful and got removed. Two had been customised in-place and needed proper refactoring before upgrade was even safe to attempt.
Parallel build on Cloudways
Built the 2.4.8 environment on Cloudways from scratch rather than upgrading in place. PHP 8.2, MariaDB 10.6, OpenSearch 2.x, Redis 7. Code-deployed via Git, database imported from a Nexcess snapshot.
Database upgrade with rollback safety
Schema upgrade ran against a clone first to catch any data issues. Took 47 minutes against ~250k products and ~80k orders. Once verified, the production cutover schema upgrade ran in 12 minutes during the maintenance window.
Cloudflare caching layer
Cloudflare in front with proper page rules — category pages cached aggressively, checkout/account paths bypassed, admin geo-locked. Result: most pageviews never reach the origin.
Zero-downtime DNS cutover
Built and tested the new environment for two weeks with the existing site untouched. Final data sync at the maintenance window, then DNS flip with 5-minute TTL. Real cutover was effectively transparent to customers.
30-day stabilisation
Monitoring on every page type, error budget tracked daily, two small regressions found and fixed within the first week. Performance kept improving as caches warmed and OpenSearch settled in.
Got a similar problem?
Free 30-minute call. We'll work out whether Magento Patches can help.