Waxing Poetic
Case study

Contract: Active (Since 2016)
Niche: Jewellery Company
Store running: Magento 1

Background

Waxing Poetic is a jewellery store founded in 2001; they have over 150 physical locations across the United States. Their e-Commerce business started in 2008, with an extensive collection of jewellery available.

Issue

Waxing Poetic reached out to us, as they were concerned about their bounce and conversation rate going down drastically. The development agency they had been using, couldn’t resolve their issues and felt it would be better to gain us on a short-contract basis to resolve this issue.

This is one of the projects we love to get into – you get such a buzz from investigating these issues. It’s almost comparable to doing a crossword puzzle – but in code.

Discovery

After investigating the server performance and doing a thorough code audit, we discovered quite a few bottlenecks – which were playing havoc on their performance for both the website and their potential clients.

Problem breakdown

01.

It would take over 10 seconds to load a page, as you know yourself – you only have a few seconds to grab someone’s attention before they jump ship to a competitor.

02.

The scripting language was over ploughed and wasn’t correctly reference or optimised for speed. This was mainly due to some scripting becoming redundant or not correctly formatted and equally a similar issue with the non-redundant scripting. All this would mean that if you wanted to look at a product or category page – you would have to download 4/5mb first.

03.

Generally on websites of today, you would utilise what they call Web Caching, this basically allows for the common elements that make up a page to have a temporary storage space on the server, allowing for faster page delivery and reduces server lag. There caching was poorly organised, and was only used on file level basis. This in turn raised their average server load to an unexpected high.

04.

There was also an intensive cron* job happening when Waxing Poetic online store would be at their busiest. This effected client use and their PPC (pay per click) campaigns.
*Cron jobs are used for regular scheduled server tasks.

05.

And finally, their database queries were painfully slow.

Ames the Operation Director at Waxing Poetic told us that – their shop staff in all 150 physical locations uses the backend application, meaning new products are being added daily to their online store; their online database of products and product attributes were growing rapidly, leaving no server space on their current infrastructure.

Solution:

After a few consultations with Ames, we decided that we would offer a new hosting plan, which would allow for short-term and long-term scalability. This allowed us to create a multi server environment, based on Magento optimised LEMP (Linus, Nginx, MySql and PHP) stack system.

This is the breakdown of the new hosting strategy

01.

Caching on server level through Varnish (HTTP accelerator, content cached directly in RAM)

02.

Load balancer to split backend activities from the frontend store traffic

03.

NFS (network file storage) to store media files and static content

04.

Redis for session storage

05.

Database replication

06.

Webnode 1 and webnode 2 for storefront, webnode 3 for application backend



The migration was accomplished very smoothly and most importantly without downtime to their online store. All static content was moved to a CDN (Content Delivery Network). By moving the media files onto a separate server, would create a calming effect on server load stress.

We now needed to give the new server a stress test, so as not to effect their business, we examined their analytics to discover the best time for us to perform the stress test, once optimal time had been discovered we turned on our server stress tool. The results spoke for themselves and the client was extremely happy.

Stress Test Results

·

The new server setup was capable to handle 100 concurrent users smoothly

·

Checkout was 3 times faster

·

Product and Category pages were down to 3 seconds and under

·

Heavy backend activity from their store staff was no longer an issue



Speeding up the frontend

Now we had to tackle the scripting and frontend issues. My team dug into the code and started a full code audit – with the aim to improve Waxing Poetic frontend shops Google speed test score.

First things first, we needed to patch and update Magento on a core level; this in itself will help speed up the process. We then performed the tasks:

·

Image optimisation:   reducing their size, but keeping their quality.

·

Scripting optimisation:   improving the speed of slow scripting query strings, JavaScript deferred and reduced in size.



Results

After 2 weeks of solid coding, we tested the site on Google speed test tool and from being a very low score, we had moved Waxing Poetics website to a green, this has a positive impact on their Search Engine Ranking Position, which in-turn improved their Search Engine Optimisation for their website. Waxing Poetic was extremely pleased and they decided to extend our contract to be their main Magento support, looking after all their online technologies. Which is always such an honour.

We are the only team who owns root access to all Waxing Poetic resources. Their online business runs safely and has been growing since last 3 years, from the date when we took over.

Technologies being utilized:

·

New Relic   -   Complex monitoring tool

·

AWS route54   -   Amazon cloud based name server hosting

·

Linode   -   Scalable cloud hosting

·

Ubuntu   -   LEMP stack

·

Varnish   -   HTTP accelerator and reverse proxy server

·

Bitbucket   -   Code repository

·

Git   -   Distributed version control system

·

MAXcdn   -   Content delivery network

·

Gattling   -   Stress test tool

·

Google Analytics   -   Traffic analyser

·

Magento 1   -   Ecommerce platform



Modules developed:

1. MAXcdn module - to flush CDN content directly from Magento backend

2. Varnish flush module - to flush single CMS pages from Varnish cache

3. Cookie warmer module - to utilize better cache performance with Varnish cache