Preparing for heavy loads and traffic

Edit on GitHub

This document helps you prepare for a traditionally very busy season of the year: Black Friday, Cyber Monday, and the Holiday Season but it helps you whenever you expect your shop to receive record-breaking traffic. In this document, you can find recommendations written for business decision-makers, hosting providers, and Spryker developers. So feel free to forward our recommendations to your colleagues!

Business tips

  • Prepare your customer care to handle non-technical issues. As higher amounts of transactions result in a higher number of customer support requests.
  • Know your customer: global businesses have Black Friday starts much earlier for eastern time zones and ends much later for western time zones.
  • Plan your features in advance: deliver something just before the campaign increases your risks.

DevOps and hosting tips

  • Follow General performance guidelines
  • Prepare stand-by/hot-spare compute nodes. Buy it in advance.
  • Prepare sizing of Redis/ElasticSeach/Database services.
  • Make sure you have clear procedures for adding a new compute node to your cluster and removing one from it. It is good to have it fully automated allowing you to easily change your cluster configuration.
  • Make sure content delivery services are in place to deliver images or other static binary data.
  • Make sure correct caching headers are set for static content.
  • Consider configuring HTTP2 and response compression.
  • Global business: co-locate infrastructure and your customers.
  • Make sure infrastructure monitoring is in place so you can watch for errors or issues.
  • Test your deployment: you should be able to quickly deliver fixes if needed.
  • If your project is hosted with Spryker PaaS, let us know that you are expecting a higher load using the Support Portal

Tips for developers

  • Follow General performance guidelines
  • Disable features, that might have no big value during Black Friday but add additional overhead:
  • Persistent Cart
  • Evaluate project features for the same reason
  • Make sure that there are no Yves pages executing multiple Zed requests. The best case is 0 or max 1 call per request, but not on each page load
  • Evaluate your code: maybe there is somewhere too verbose logging, which is not so useful but adds overhead
  • Check your integration processes:
    • Asynchronous must handle expected amounts of data
    • Synchronous must handle the expected amount of requests in the expected time per request
    • Make sure that your ERP or backend systems are capable of processing the expected number of transactions
    • Talk to partners integrated into checkout—for example, payment providers and fraud checks. They need to be prepared to handle expected volumes of transactions
    • Preload all relevant data in advanced: new products, prepare discount rules but mark them disabled
    • Make sure application monitoring is in place (Tideways, NewRelic) so you can watch for errors or issues

Extra: Performance tips

  • Determine the critical journey that your customers will follow:
  • Journey before the checkout.
  • Journey in the checkout (what are the most popular payment or shipping methods?).
  • Prepare test plans and execute tests (different tools can be used: JMeter, LoadRunner, BlazeMeter).
  • Make sure that test results match the expected load or analyze and optimize bottlenecks.
  • Test also external systems to make sure they handle the expected load.
  • Run a rehearsal: execute the tests with higher numbers than you expect and make sure you still have stability and room to handle all coming customers.