Black Friday and its online equivalent, Cyber Monday, are a month away, which means retailers are busy gearing up for a four-day shopping frenzy—kicking off a holiday season that, for many, accounts for 20-40% of their annual revenues.
Last year, 247 million customers spent $59.5 billion on Black Friday alone. 47.5% of those purchases were made online, putting even more pressure on retailers to make sure all of their on- and offline systems are up to the challenge.
It is estimated that a website outage costs Amazon $120,000 per minute on a normal day, let alone on a day like Black Friday when customers flood store websites trying to find the best deals. Kohl’s site was down for several hours last year on US Thanksgiving—the day before Black Friday—preventing customers from making any purchases for hours.
Your database is a key component of your website’s performance and stability, and to help you get ready to the holidays, we asked our experts to assemble a list of the top 7 things you can do now to ensure your site is ready for Black Friday.
1. Review performance metrics from last year, forecast this year’s consumption, and then load test based on those numbers
- Pull the trends from last year’s holiday shopping weekend. Trends should include the number of transactions/second, throughput, application and disk response time, batch requests/second, CPU, and memory utilizations.
- Forecast the current year’s load based on previous year’s consumption.
- Assess whether the hardware can bear the forecasted capacity.
- Perform load testing on the servers simulating the point-of-sale transactions.
- Adjust hardware as necessary, based on the testing results.
2. Evaluate backup and failover strategy, and perform disaster recovery testing
- Ensure your backup strategy is proper and in place. We also recommend having a redundant copy of your backup on an external storage device or in a data center.
- Ensure backups can be restored efficiently when needed.
- Perform a dry run of your backup and restore procedure.
- Perform disaster recovery (DR) testing to ensure your system runs properly on the DR server in case of a disaster.
3. Perform server health check and configuration check
- Perform an overall health check of your database server.
- Ensure memory, NIC cards, hard disks are all healthy.
- Ensure power connectivity and power backups are in place.
- Perform a database configuration check:
- Look for common configurations
- Make sure memory settings are accurate, threads, parallelism and other settings are as per the hardware
4. Test high availability solution and perform connection pooling for estimated traffic
- The database server should be able to manage the estimated number of incoming requests during peak traffic times. Ensure that the application and the database are configured for connection pooling and that it is set to an optimal value.
- The database server should be configured for any hardware failure as well as any database failure, which means an appropriate high availability solution should be in place. For example:
- For SQL Server: Clustering along with mirroring, log shipping, replication, always on etc.
- For Oracle: RAC along with a standby database, replication, always on etc.
- Test existing high availability solution.
5. Clean up and archive old data
- Last but not the least, archive old data that isn’t being used. This helps reduce the time it takes to perform database maintenance activities, such as rebuilding and reorganizing indexes, and updating statistics. It helps improve query performance.
- Archived data may simply be imported to another database, backup file etc.
6. Ensure all recent, ongoing, and pending issues are resolved
- Extract and analyze the errors and issues that have occurred recently or are recurring in nature, including problems and incidents recently fixed.
- Review recent changes to your database configuration, including changes made due to a problem or incident. This may include patch updates, application updates, structural changes, added schedules, modified file parameters, and other configurable items.
7. Establish freeze dates
- In order to avoid unseen risks, implement a code/configuration freeze date.
- List challenges and risks involved with any unavoidable implementations.
- Review any changes with respect to all the above mentioned points.