Performance Planning
Self Managed Commerce is a highly-customizable solution, which with flexibility comes the ability to add inefficiencies or bottlenecks. It is important to validate that your performance requirements continue to be met as you extend and customize the solution. Your business combination of unique business rules, shopper behavior, and data characteristics might be different from other Elastic Path customers. Self Managed Commerce can be flexible to meet unique requirements, but you often need to adjust to achieve those needs at the right cost, in the right time frame, with the right complexity and reliability.
What puts pressure on performance?
There is a trade-off between performance, functionality and cost. The way you integrate Self Managed Commerce with back-end and third-party systems is critical to the performance of the integrated solution. Issues may only be revealed when large numbers of users use the system simultaneously. Ensure that you have sufficient computing resources and that you bring your integrated systems together efficiently.
The following aspects can cause performance degradation with Self Managed Commerce:
- Design and implementation of custom business logic and functionality.
- Back-end and third-party integrations.
- Shopper behavior varying by business domain, flow, touch-point type, and so on.
- Complexity of your data combined with Elastic Path features.
What can relieve the pressure?
Self Managed Commerce customers have many tools available to ensure the solution performs. The following tools can help relieve the pressure:
- Check and validate the speed, scalability, and connectivity of your integrated systems.
tip
Consider implementing circuit-breaker functionality so Elastic Path knows what to do if integrated systems go down or become too slow to keep up.
- Review the design and efficiency of your customized code that runs in Elastic Path applications.
- Optimizing the use of various caching layers.
- Review the use of Elastic Path features, especially those that require real-time calculation.
- Review the hardware size and auto-scaling rules that Elastic Path applications use.
Solve Bottlenecks
Do not take for granted that the Elastic Path system you have or are building will perform the way your business needs. As previously mentioned, several variables can affect the behavior and characteristics of the system.
Prove that the system behaves the way your business intended. Start by defining a set of measurable performance requirements. Plan how to confirm that the system meets those requirements. The following steps are a suggestion for performance testing methodology.
Understand your shopper’s behavior.
Ensure that you understand how the system will be used by the users and shoppers. The following questions help you to understand the needs of the system:
- How many shoppers will be accessing the system on a typical day?
- How will the shopper traffic change over the course of a day, a week, the year?
- What percentage of shoppers will just be browsing and reading about products?
- How many shoppers will add items to the cart?
- How many items will be in the cart at a time?
- How many shoppers will check out, of the shoppers who have added to the cart?
- What will change on high-traffic days?
Identify performance goals.
Identifying and getting agreement on the the performance requirements of the system is critical. These are often expressed as:
- A number of concurrent users.
- A checkout funnel. This funnel is the ratio of users who search and browse versus the users adding to the cart versus users checking out.
- The response time requirements for certain API calls.
- The total number of transactions per second.
The following is a list of possible sources for determining these numbers:
- Analytics data from your existing site traffic.
- Growth plans for traffic through the online channel.
- Marketing roadmaps for your business.
Build a performance test plan.
The performance test plan should capture the shopper behaviour and describe test cases that will model that behaviour. The plan will capture measurable performance goals and describe how to test if the system meets those goals. The test plan describes what to test and how you will test it, and how you will know if you have or have not met the performance requirements.
Obtain agreement on the performance plan.
Ensure that the executive sponsors and stakeholders agree on the requirements that you describe in the performance test plan. For example, you validate that the system performs one way and find out that was not what was needed. You might find that a lot of correction and rework is required, adding cost and risk to the project.
Implement the performance plan.
Add testing to the project timeline
Be prepared to start testing when functionality is nearly complete. A rule of thumb is to begin running tests when User Acceptance Tests are 95% complete. By the time you want to start performance testing, you will want to have the following tasks completed:
- Gather and review the requirements data.
- Devise and approve a plan.
- Select the testing tools and framework to use.
- Write and debug the test scripts.
- Set up tools to gather the required system data.
You will also want to have your Self Managed Commerce architects, Self Managed Commerce developers, and DevOps engineers available to help analyze data and system behaviors.
Be prepared for iterations. If the performance testing reveals that any performance requirement is not met, then you need sufficient time to investigate and address the issue. Identifying and resolving the issue takes time. Refining the system performance is most often an iterative process, where you need to repeat the tests and make changes more than once.
The End Result
Setting and testing measurable performance goals is an important component of any enterprise software implementation. After you complete all of the work, you will have a deeper understanding of performance requirements. With that understanding, you have the necessary plan, tools, and expertise to validate that you meet those requirements.