Here it comes again: the big Amazon showcase flash sale. You’d have to live under a rock not to notice every site vying to grab attention for the “best list of Prime deals!” It’s all massive exposure, but that cuts both ways: Amazon’s site has to handle all the traffic it’s creating. Ostensibly a “big sale day,” Prime Day is really designed to drive $99 yearly subscription membership fees. No matter how deep the discount, nor how many “free” video, music, audio, books, etc. that are offered, Amazon is willing to spend big money to get you signed up. Why? Because corporations much rather prefer you pay an “ongoing fee” than wait for intermittent purchases. Periodic payments equals predictability, which Wall Street truly loves. So AWS is willing to trade some short-term profit to get people to sign up because it turns out that when most people sign up for something, they tend to stay signed up… even if they’re not using it(!) The same goes for gift cards. An amazing amount actually goes unredeemed. (I have $100 of dance classes that’s 12 years old now; that’s some sunk cost right there.)
So with big discounts and a big play for more Prime subscribers, Amazon.com is about to hit some major traffic. And they have a bad reputation from past Prime Day snafus to overcome.
Amazon’s 2015 Prime Day: Disappointing Offerings
The inaugural 2015 Amazon Prime Day extravaganza generated plenty of sales, but also many complaints around the limited inventory and the ease of navigating Amazon’s site.
However, Amazon received “withering criticism from consumers who took exception to low inventories on marquee items and bargains on obscure products with little mainstream appeal.”
Staggering the offerings with mini “flash sales” over several hours highlighted specific deals, but made it even harder for customers to find, and buy, what they were looking for. Who wants to wait at their computer for hours, so that they can get a deal? On what turns out to be not a very cool product to begin with? And to add insult to injury, Amazon’s inventory itself was limited, so that only added to customer pain. Customers filled social media with ridicule, with hashtags like #unhappyPrimeDay, #AmazonFail, #gobacktosleep, and #PrimeDayFail trending.
Amazon’s 2016 Prime Day: Checkout Failures
For the follow up 2016 Amazon Prime Day, it was clear Amazon had taken pains to ensure a better selection, and better deals. And this in turn drove even more customers to the site, up to 60% over 2015 Prime Day. But perhaps due to that upswing in users, Amazon.com suffered significant performance issues. Specifically, 2016 Prime Day had lots of checkout failures. That’s pretty much the worst scenario for an e-commerce site. You’ve spent your marketing budget, you actually attracted the customers, and they want to give you cash… but you can’t take it. Worse still, in this era of instant social media, they’re going to tell everyone during the Prime Day event, which impacts new customer visits… As Jason Ankeny reported, “Many Amazon Prime subscribers hoping to score Prime Day deals and discounts instead took to Twitter to complain about “add to cart fail” messages generated when they attempted to purchase sale-priced items. Some added the hashtag ‘#PrimeDayFail’ to their tweets.”
E-Commerce’s Challenge for Databases
E-commerce requires OLTP, i.e., “online transaction processing,” which necessitates an RDBMS. The challenge with RDBMSs is scale—some of the biggest database vendors all provide single-master architectures, which limit the scaling capabilities. Once the database write-master exceeds the size of the biggest single instance available, there are few write-scaling solutions other than sharding, which carries with it application and design challenges.
“But what about NoSQL databases?” decision-makers ask. “I’ve heard NoSQL can scale elastically!” That’s true. NoSQL databases don’t have an issue scaling out. They easily add nodes on demand, gaining the coveted “linear scale” for each additional node added. However, in return for that scale, NoSQL databases don’t provide ACID transactionality, and are especially ill-suited for high-performance, cross-node transactions. And what that means is that it’s very hard to guarantee that simultaneous transactions all work together, which is exactly the use case most prevalent during a flash sale like Prime Day. So whereas a NoSQL-based e-commerce site can definitely take transactions from many customers simultaneously, guaranteeing all those transactions are accessing (and updating!) a single consistent set of inventory is problematic. Which means customers can buy things that aren’t available, and other similar business rule (and legal) violations.
Amazon hasn’t let out many details of the architecture underlying their e-commerce site, but if it’s anything like their RDS Aurora RDBMS offering, there’s a built-in scale problem. At the customer volume Prime Day represents, there doesn’t exist a large enough single instance to make Aurora handle the workload created. And if the solution is to shard Aurora, the complexities added (not just cross-node transaction business rule issues) but deployment and devops issues as well.
How to Do Better at E-Commerce
ClustrixDB was built specifically to scale MySQL OLTP workloads to enterprise levels and beyond. A distributed MySQL-compatible, ACID-compliant relational database, ClustrixDB linearly scales out both write and read transactions in the cloud or in your datacenter, requiring a minimum of application changes, DBA maintenance, and redundant hardware.