In the unforgiving digital world, shoppers don't usually reward you if your website has great performance and uptime statistics. Good website performance is often taken for granted—in 2017, it’s table stakes. However, shoppers do notice when your site is sluggish or down, even for only a minute. And they use social media to make sure the news spreads fast. Constantly rising customer expectations for site performance mean “slow is the new down.”
With reputations and revenue on the line, it’s easy to understand why site performance has been a single-minded obsession for online firms. While page loads and checkout efficiency are common barometers, the reality of site performance runs much deeper. An ecommerce firm doesn't just manage a website, but an entire supply chain operating in a world that, in many ways, mirrors traditional commerce. Beyond the typical online functions of product search, selection, and checkout you have inventory management, shipping, and returns.
“A database’s sole purpose is to store data and enable your applications to query and manipulate the data”
To keep operations running smoothly, you need a scalable technology stack to support these complex processes. The database is the foundational component of this stack. Databases store massive amounts of data and execute millions of requests every day, so it’s essential you understand how they impact performance, from the customer’s first site visit to product fulfillment.
What Has Changed
Sites now offer a greater number of services and experiences as the line between online and offline blurs, creating stress on the database. Shopify runs one of the fastest growing ecommerce sites, and when we spoke recently with Sergio Roysen, one of Shopify’s top engineers, he commented that interactive features like high-resolution photos, audio, video, and chat could increase the storage requirements and computational loads on databases. As new forms of media enhance the online shopping experience—and as usage of that new media leads to more database requests per user per day—even small, seemingly innocuous changes can create challenges for your database. In fact, Roysen commented that emojis have emerged as one recent database challenge. Most databases in their default configurations don’t typically support emojis, which are often used in the comments section of a site. So if you want to use them you need to do some custom configuration to prevent random characters and symbols from showing up instead. Adding support for an element like emojis after the fact, while reducing or eliminating downtime, can be a real challenge.
Additional ecommerce system requirements, such as support for multiple languages, compliance requirements, and protection against cyber-attacks, can create more stress on your database, engineering team, and development team. Not only does your infrastructure have to be highly scalable and always on, it must also adapt to different markets, support regulations, and prevent security breaches. Nothing can hurt site performance quite like a denial-of-service attack or damage your reputation like a data breach exposing customer data. With these trends converging, the database now takes center stage. No longer a second-class citizen, it has emerged from being perceived as simply storage to a critical part of a high-performance ecommerce platform.
Traffic Can Spike in a Flash
Demand planning can be one of the most challenging and problematic parts of database performance. You can try to plan for peak periods like Black Friday and dimension your database to be able to handle that level of traffic, but at the same time you don’t want to waste resources when traffic dips at other times throughout the year.
Flash sales represent an even greater challenge, creating sudden spikes in traffic as a million or more shoppers line up to purchase one of the 1,000 pairs of sneakers being offered starting at noon on Saturday. These types of limited time offers have hamstrung more than a few sites, from major superstores to national airlines. In these cases, the database might become a bottleneck as it struggles to keep up with the number of concurrent users. As database requests increase, system latency will spike, and, in some instances, turn into a full outage. To plan resources properly, you need to understand how all the layers in your technology stack perform under pressure.
What You Should Keep an Eye On
A database’s sole purpose is to store data and enable your applications to query and manipulate the data. When users click, tap, swipe, or otherwise ask your application to do something, they trigger a request or query to the database. How well your queries perform will determine how responsive your site will be. So, there are a few things you should keep your eye on to understand whether your database is the cause of your performance problems or exposes a security risk.
First, you should look for increases in latency by checking current queries by total time. Next, look for long-term trends to spot gradual changes that may indicate potential scaling issues that are percolating. Finally, queries can cause servers to do significant amounts of background work and this deferred work impacts database performance overall by consuming CPU, memory, and I/O resources. You need to keep a close watch on these resources, as a poorly executing query can cause a nicely scaling system to experience a sudden increase in response time—or even bring the site down completely.
How to Keep Things Running Smoothly
The days of hiring a few developers to write an online webpage and lining-up a service to manage credit card payments are long gone. To keep your ecommerce site running smoothly as you add new services, features, and markets, you need better visibility and analytics that look at all layers of your technology stack. This includes database and system monitoring tools that can give you the insight you need for rock-solid site performance. In a world where slow is the new down, “better performance” starts with better understanding of your system, anticipating possible problems, and preventing them ahead of time.