Online retailers know the dangers of high volume traffic during peak periods. A major sale can lead to the system crashing, customers having to wait long periods of time to check out, or items left in carts because the consumer simply got fed up and decided to shop elsewhere. With the holiday season quickly approaching, businesses are trying to find ways to avoid these issues and no company is immune.
The small neighborhood entrepreneur and the international corporation are all at risk of problems due to high volume traffic. Fortunately, there are steps a retailer can take to minimize the risk of downtime or a slow-moving site, and these steps should be taken promptly before the holiday rush begins. AWS can be of great help in establishing an eCommerce platform that is not only scalable but also highly available. How can one make use of this platform to benefit their business?
Planning
The first step in building a solid eCommerce platform is to plan out what needs to be done to accomplish this goal. First, the entrepreneur needs to determine which technologies will be employed in the process. These technologies work to implement, run and deploy the infrastructure of the site, and care must be taken at this time to ensure the correct ones are selected. It can be difficult to replace certain elements once they have been taken live and entrepreneurs must recognize this when choosing. For this reason, it’s wise to consider making use of native infrastructure management tools such as AWS CloudFormation as opposed to making use of a third-party provider.
A pipeline must also be constructed as it serves as a way to test and deploy hotfixes as well as improvements. Bitbucket is one repository that many eCommerce businesses use, and those that do should make use of the Bitbucket pipeline as this reduces the amount of time needed to get it up and running. Others opt for the native AWS CodePipeline as they want to eliminate the need for additional infrastructure to handle the tasks of hotfixes and deployments. When these building blocks have been put into place, the infrastructure planning can then proceed.
Infrastructure
When creating the infrastructure of an eCommerce platform, individuals need to consider the three major layers. All are necessary to successfully implement the platform.
The frontend serves as the first layer of this platform. Here is where content is identified and a determination made as to how this material is generated. Software is typically used to manage the content of an eCommerce platform and the material is dynamically generated. When this has been accomplished, a web service serves it on the fly. Making certain this dynamically generated content is always available is crucial, which is why front end systems need an autoscaling group in multiple availability zones. However, this is not enough. A load balancer is also necessary to ensure site traffic is evenly distributed.
Those who have taken these steps before recommend paying more attention to availability than to scalability when first starting with a content delivery system. The use of this type of system helps to minimize the load on the front end server, doing so by taking dynamically generated content and serving it statically by using data centers around the world. This guarantees visitors have an outstanding browsing experience with few if any delays.
The middleware functions as the second layer of infrastructure. Data processing occurs in this layer, such as API calls, and a great deal of effort is needed to ensure the middleware is implemented properly. Developers must focus on ensuring the scalability and availability of the systems are correct, as they must be highly available, load-balanced, and autoscaling. A failure to achieve these goals will lead to application latency during periods of high demand.
To manage these systems, it is helpful to run container workloads on auto-scaling groups. Containers scale more rapidly than an auto-scaling group. When one container is no longer responding, it may simply be terminated and replaced quickly. This is not possible with auto-scaling groups, which take minutes to replace when they are no longer working properly.
This is of great importance as consumers have a very short attention span. If a site is not working properly, the customer may choose to shop elsewhere. Another benefit of using the container-based approach is it helps to accelerate the site owner’s ability to push improvements and hotfixes.
The backend data layer is the final layer of the eCommerce platform. Care needs to be taken here as well because this area is frequently a bottleneck. Downtime is needed to scale a relational database, which means it has to be provisioned with the appropriate amount of resources. If it is not, unexpected traffic spikes cannot be handled. When monitoring this layer, business owners need to focus on Memory, CPU, Queue Depth, and IOPS.
These elements work together so an increase in one area may lead to an increase in another element. Slow queries, for example, need to be identified and tweaked. Doing so improves the performance of the site. The person responsible for maintaining this layer needs to understand how to read these metrics and make adjustments based on the information obtained to ensure optimal site performance.
The CI/CD Pipeline
Urgent improvements and hotfixes must be deployed promptly without leading to downtime of the site. Fortunately, this deployment is possible with the help of a trustworthy CI/CD pipeline. Many website operators choose to invalidate static files on the CDN. By doing so, they can ensure any dynamic content changes that are made will immediately appear on the live site. Middleware containers need a pipeline that is capable of creating and storing container images. They are necessary to ensure effective versioning when the application changes.
When this pipeline is in place, rolling updates can easily be implemented. There will be no downtime during deployments either. Fortunately, most container management systems support these updates, including Amazon ECS and Kubernetes. Many times, the backend and middleware layers are deployed side-by-side to make certain any changes to the database occur as the code changes. However, testing must be done at the end of deployment of the pipeline to ensure everything operates as it is supposed to.
The IT Process Institute released its Visible Ops Handbook a few years ago. In this handbook, they stated 80 percent of unplanned outages were the result of changes made by developers or administrators that were not properly planned. Furthermore, the Enterprise Management Association states 60 percent of performance and availability errors occur as a result of a misconfiguration.
In 2014, Gartner announced downtime would cost a business approximately $5,600 each minute the system was down and as much as $300,000 per hour. Statista agrees with this assessment, reporting the average downtime in 2017 cost the business between $300,000 and $400,000 each hour the system wasn’t operational. Testing can help to reduce many of these errors and prevent downtime.
Testing
Business owners often fail to test their eCommerce platform and pay for this oversight. In fact, load testing is critical to ensure the site operates as intended. The platform undergoes changes multiple times each week, often several times in a single day, and each change can positively or negatively impact the system’s performance.
To ensure changes made won’t be detrimental to the site, site operators need to build load tests and run them regularly on both the front and back end infrastructure when they are in pre-production. No build should be released to production until this step has taken place. These load tests need to occur immediately after a build is deployed to pre-production and the results need to be saved. They can then be compared to prior tests to determine the effect of the query and code changes. Only when these steps have been taken should a build be released to production.
With the help of these tests, susceptible system components can be identified. Furthermore, the test may be used to figure out the max throughput. This throughput provides information on how many concurrent users may be on the system. Never assume small changes don’t need to be tested. Any alteration to the system must undergo this process to ensure it won’t harm the site in any way. This task becomes much easier when the load tests have been fully automated.
Ecommerce retailers often focus on busy periods throughout the year, such as the upcoming holiday season. However, retail sales occur seven days a week, 365 days a year. For this reason, a site operator has to ensure the system is up and running at optimal performance at all times. A failure to do so could lead to a loss of customers and more.
When time is spent planning and implementing the proper infrastructure, businesses find they are able to meet the expectations of customers all year long and do so in a way that has these individuals returning in the future. The goal is to provide the best possible experience for the customer and the right provider can be of help with this. Don’t hesitate to seek outside assistance if you are struggling in this area. Doing so ensures your retail infrastructure is able to meet the needs of your customers at all times.