The first days of a sales period can represent up to 20% of the yearly turnover, for some e-commerce websites. So! To avoid any disturbance, here are QUANTA’s 5 web performance pointers to succeed in your sales.
Launch a closed-access version of the website, in advance
Some countries and states passed regulations to supervise sales periods. For example, the French government forbids the display of discounted prices, on the first day of the sales period, before 8am. The big problem here, is that most customers are eagerly waiting far before that time! But a massive change in the contents of an e-commerce platform (for example the prices, or the design announcing “Sales”), when said platform is full of users, is sure to be too much for the servers.
Why? Simply because when this horde of users try to access pages that haven’t been put in cache yet (because they’re “new”), the CMS has to do complex calculations that will inevitably overcharge your servers.
So. To avoid this unpleasantness, it is far better to simply close your website the evening before the start of the sales. Trust me, you’ll lose very few customers that night because, come on! Who buys online the day before a sales period? 0_0 And you’ll definitely be thankful for this decision later. Little bonus pointer: put your design team to work and ask them to concoct a kickass maintenance page, with a little teaser video, a countdown, …etc. Now back to business! In parallel to this “closing down”, launch online, with a closed access, the “Sales” version of the website, only accessible to your IP address and your web agency.
This way, between midnight and the official sales launch hour, you’ll be able to check one last time the performance of your entire sales funnel, in its “sales” version, in the prod environment.
I’m insisting on the “in the prod environment”, because even if your web agency gave you the green light in the pre-prod setting, it is better to be safe than sorry. Always check the entire sales funnel in its prod version, before opening hours.
The results will be that, when the hour has come to reopen the website, you’ll just have to drop your beautiful teaser page, and you’ll immediately be able to welcome your customers. Your team will have gained some bags under their eyes during the night, but they will thank you later when they will not have to perform emergency fixings, in haste.
Automatically pre-load your caches
Instead of trying to visit all your website’s pages, by hand, in their “sales” version, before the official launch, it is far more effective to use a bot to do it.
Why, you ask? Because that way, all the “sales” pages will be preloaded before the official launch of your “Sales” close-access website. They will be stored in cache (Varnish, Full Page Cache, or your CMS’s cache), before the arrival of your customers.
The page needs only to be accessed once, for it to be stored in the cache system. That is why a bot is needed; to gradually access to all your “Sales” website’s pages.
Here are some tools you can use for this operation:
- mage-perftest
HTTrack
Nutch
Sphider
Crawler4j
Just a little warning. These are all “geeky” and powerful tools, so it is important to take your time to conduct the aforementioned operation. If not, you’ll take the risk of simply crashing your website with the influx of requests. So, discuss the “how/when to” with your web agency!
Forbid back-office actions on the first day!
It only takes a simple click in your CMS’s back-office to ruin one of the most important business day of your year. Clicks in the back-office consume a lot of server resources, and it can be dangerous for the platform, especially when they happen at the same time of a buttload of orders.
Our advice? At the very least, inform your e-commerce / sales team that on the first day of the sales period, nobody is to use your CMS’s back office to add new products, or modify the existing ones’ descriptions.
On that day, it’s hands off! No more touch ups! And if you really want to have peace of mind, just plainly (temporarily) forbid the access to your back office to all non-tech/vital users. 😉
You don’t think that’s such a big deal? Well, we’ve seen and measured it, time and again, at QUANTA. A simple back office click can invalidate the caches of a lot of pages, and greatly affect a website (Cf point 2, for those of you that have been following :P).
More info on this subject here.
Temporarily add front-end servers
Warning, it’s time for a little tech talk! 😉 At QUANTA, we observed that for almost all CMS, but specifically for Magento, the peaks in customer activity induce peaks in the CPU load on front-end servers (those that generate the visual pages for e-commerce website), more than the load on database servers. Although it is usually all by itself, the database server is generally less solicited than the rest of the architecture.
And that’s truly for the better. Simply because it is complex to have several database servers working in parallel to hold a larger load, whereas it is very simple to add front-end servers to distribute queries between a string of servers (Commonly referred to as a “server pool”).
In other words, to sustain the load on the first day of the sales period, rather than multiplying the database servers, just multiply the front-end servers.
However, do not do this rashly. If you only had a single front-end server until then, it is important to verify that the architecture of your website is ready to accommodate other fronts. The potential implications are to be discussed beforehand with your agency, but the main one you should focus on is the user sessions (cookies). The question to ask yourself is whether a user session, in your configuration, is stored as a file in a directory on the front-end server, or if it is stored in a shareable system such as the database, or a cache server like Redis? The session must be shared and accessible by each of the front-end servers so that the user’s navigation (Login, Adding a cart) is not disturbed.
Imagine if your customer puts an article in his cart, then is redirected to a server that can no longer find his session and his product. There is a good chance that he will slam the door of your website.
But even with this key step to be watchful of, adding front-end servers remains the easiest way to increase the capacity of your site for the first days of sales.
Last but not least. Try to install your front-end servers 2 to 3 days before the sales period, so as to be sure of:
- The good working of your sales funnel, on each of your servers (Yes, I already said that, and I’ll keep saying it.)
To installation of your monitoring probes on these new servers, in order to have a complete mapping of the health of your architecture for the D-Day.
Run load tests
In order to be sure that you will be able to welcome more visitors than usual on your website, I advise you to simulate a peak of traffic higher than the one you expect on the day of the sales.
Yes, yes, and yes! Get some leeway! It would surely be extremely frustrating if your emailing campaigns worked too well, but if you ended up with a crashed website, thus torpedoing your turnover. By the bye! It reminds me of the story of an e-commerce director on the first day of sales… 😛
To perform load tests, many solutions exist, grouped in 2 categories:
- House tests performed by your teams, with generally free and time consuming tools as siege, wget, curl, ab, etc.
- “Pro” tests performed by independent third parties such as CloudNetCare, Neotys or QUANTA.
Whichever solution is chosen in the end, during these tests it is important to:
- Simulate what a customer would do on your website, by basing the scenario of your load tests on the behavior of your average customer, monitored in your Google Analytics history.
- Do your calculations so as to easily see what the limit is (before your website crash, ndlr). Unintelligible example of load test results: “We can handle 13 422 HTTP requests per minutes with 60% of CPU” “… Ok. Buuuut… Is that good or bad?” Intelligible example of load test results: “My website in “Sales mode” handles, without disturbances, 5 times the traffic recorded during our previous sales period, and this with virtual customers going through the whole sales funnel.” “Ok, then I am relaxed for the D-day.”
If you want to know more about important things you should keep in mind before you get started; we already wrote a comprehensive guide on the implementation of load tests.
Good sales to you!