This Black Friday, I was in a task force, ready to help high profile DXC Commerce customers to cope with a peak in traffic. It turned out to be boring – there was no moment I could be a hero and “save the day”. Things went surprisingly smooth, even for websites which were struggling with last Black Friday. I went home and was little dissatisfied, but deep down, I know it was a huge success. The hard work from us (Commerce development team), them (the partner development teams), and Managed Services has been well paid off.
Use the latest version
You have heard me saying this, and you will probably hear from me again: Please, use the latest version possible. There is no reason to stay with an old version. This is a little truth: I hurt a little deep inside whenever I read a question on world asking a question about Commerce 7.5, or even 8.x. You should be using at least 10.8 by now, if not 11.x.
Here is an example of a site from 10.4
It’s not even close. Even if you consider the traffic increase during Black Friday (more than 5x times more load), the query still performs better than a normal day.
And this is just one example (of course, it’s one of the most impressive examples, otherwise why would I show it to you). There are many other improvements that will help your site performs better, handles more load and still have some resources left to spare. And that can be done, for almost free. Who would not love that?
Maintain your databases, please
Commerce is very database-bound, which means a good database performance is very important to overall performance. We try hard to make sure the database performance, out of the box, is as good as possible – fewer round trips, faster queries and more effective indexes. However, one thing is not under our control – is the maintenance of the database. As we learned here and here, a badly fragmented database index can have severe performance impact. It’s important to rebuild/reorganize your indexes frequently, it’s even more important to make sure all of your indexes are in good state (or at least, NOT bad state), before Black Friday starts.
Move to the new promotion system
Black Friday is all about discounts (and making people buy stuffs they might not really need). And to keep the your customers happy, you would want to your site to calculate promotions, fast.
There is no contest here. The old promotion is not supposed to be fast. And when it comes to concurrent redemption limits, it fails miserably (trust me, I tried. And it fails even with two users checking out at a same time). If you are about to do a lot of promotion calculation, the new promotion is the way to go.
We had customers struggling with around 100 promotions in old system. And now you can have 10x times more than that and the new one still works well. We tested with 10.000 promotions (yes, ten thousands) with 1000 active, and it can perform nicely without breaking a sweat. True, Black Friday is about one or a few promotions, but for a lot of calculations, you still want it to be fast, right?
No surprise is a good surprise
If at 100 concurrent users, your CPU is at 20%, can you expect your site to serve up to 500 concurrent users? No, software does not work that way. There are so many factors that make your linear calculation falls flat. The only way to know how would your site perform with 500 concurrent users is to run a load test with that number. And a good load test is a load test is simulate as much as possible how a real user would do in real world. Some customers like browsing. Some like searching. Some add items to carts but leave it there and some actually place orders. Try to figure out the percentage from our normal days, or your previous Black Friday and try to see how your site behaves. Even better, find the bottlenecks before hands, and fix them before they become deadly problems. No you’ll never be able to make sure you know everything before hand – what if you planned for 500 concurrent users but your hugely successful campaign brings 1000 concurrent users? But less surprises is a always better than more surprise!
Ever heard of DXC?
Let’s consider a scenario like this: You are hosting your own website. Because the increase of traffic, you will need to do find someone who know how to add more hardware. And then you have to wait to migrate to a bigger machine. When you are done, BF might be already over and many of your customers have had a not so happy experience with your site.
Now assume you are hosting your website on Azure, scaling is much easier, but still, you need someone to watch out for it. And you find some issues. May be your developers can fix it. But if they can’t you will have to reach for Episerver for help. If our first line of support (developer support) can’t, they will escalate to us (development team). By the time it reaches us and we understand the problem, Black Friday might already be over. Yes, we want to help as fast as possible, and we understand how you can lose money over a slow site on Black Friday, but we have processes (to avoid issues always escalate to us, we would be highly overloaded), and we do not always have someone available on short notice.
And that is, of course, not something you want to happen.
A smooth Black Friday was not an accident, but was carefully planned. Weeks before Black Friday, Managed Service team already prepared to scale up the instances. They already reached for us for advice and recommendations. And as I mentioned in the beginning of this post, a task force was ready to tackle any problems. If there was any incident, all of the parties will be informed in term of minutes, and we should have a solution/workaround within 10 minutes or so.
DXC is more than just Black Friday, but an event like Black Friday highlights what DXC can do for you. The combination of information, expertise, and awareness is something really hard to beat.
One thought on “Lessons learned from a “boring” Black Friday”
Thanks for sharing experience, very helpful tips indeed!