Migrating an application to the cloud can help build more scalability, reliability, and security all while reducing the overall management and costs of your infrastructure. To fully capitalize on these benefits, your migration process should include a Load Testing step.
The Different Types of “Load” Testing
The term Load Testing gets thrown around quite a bit to describe different styles of testing. At its core, it is the process of simulating virtual user(s) engaging with your application. Here are a few of the different types that will be talked about in this article:
Performance Testing: Testing the workflows within an application to ensure the end-to-end user experience is performing as expected. This type of testing usually requires a minimal number of virtual users.
Load Testing: Testing the workflows within an application to ensure the end-to-end user experience is performing as expected, but with a realistic number of virtual users at once.
Stress Testing: Testing the workflows within an application at the upper limits of virtual users that your system can handle at once. This upper limit of virtual users can be found during Load testing.
While there are other types of testing that can be done and subcategories for the types listed above, these three are the main types of load testing that should be done when migrating to the cloud.
Performance Testing – Using the Right Tools
Performance testing should be something that most application teams are already doing, so this shouldn’t be new. What may be new are the toolsets available to aide in this type of testing.
Application Performance Management services such as AWS X-Ray and Azure Application Insights can greatly help in finding and remediating application bottlenecks. With these tools, you can track response times of individual calls, as well as track response times from external resources such as a SQL Database or API call. Being able to determine the root cause for the application bottlenecks greatly reduces the time it takes to remediate the issue!
Dive Deeper: Simulate High-Scale Load for Applications with Azure Load Testing
Right Sizing – Lift and Shift
The Lift and Shift methodology for migrating focus on copying resources hosted in a datacenter (lifting) and moving them to a cloud environment (shifting). The types of VM that you chose during this type of migration might seem straightforward, just base choices on the existing hardware you were using. However, depending on the region of the cloud provider that you are hosting, there could be thousands of choices for VM configurations. With that being said, there is great possibility that there is VM configuration that could handle your load for a lower cost or that could help improve performance of your application.
Load Testing should be done early in the Lift and Shift process to help determine if the configurations that are being chosen are right (hence the term ‘Right Sizing’). During this process, you should simulate both your average and peak expected load on your application to see how the infrastructure reacts.
You may notice that the application isn’t using a large amount of the available resources and can scale down your VMs, or that you are pushing your VMs to the limit and need to scale up (We’ll look more into scaling up or down below). With the hardware constraint handcuffs being removed in this migration, this is an integral step to optimizing your application infrastructure.
Right Sizing – PaaS Migrations
Migrating to Platform as a Service (PaaS) resources can remove a lot of the overhead management and headache of maintain physical servers. You no longer need to worry about maintaining basic infrastructure. However, unlike in the Lift and Shift method, there might not be straightforward choice on the correct size for the PaaS resources you are migrating to. This is where Load Testing is essential.
Load Testing should be accomplished as early as possible during PaaS Migrations to help ensure the sizing of the resources is correct. Services sure as AWS Elastic Beanstalk and Azure App Services are great choices for hosting your applications, but you need to ensure that you select the correct size. During this process, you should simulate both your average and peak expected load on your application to see how the infrastructure reacts. Depending on the results, you might need to scale up or down to get that right size (Again, see below for more on scaling up and down).
Right Sizing – Modernization
A cloud migration is a great time to also modernize an application. With the migration planned, you can also switch to cloud services for caching, content delivery, and updated logging to name a few. These modern updates can greatly improve the experience and performance of your application, but you need to ensure that they are being set up correctly.
It is recommended to first make the initial migration before you start making large changes for modernization. The base infrastructure should be right-sized already, whether it be a PaaS migration or a Lift and Shift.
With the base infrastructure correctly sized, you have a base line for the performance of your application. Once you have the modernization changes tested and working correctly, you should run Load Tests with the same amount of users to the ones done during rightsizing to ensure that your modernization efforts are improving performance and user experience.
Explore More: Are you Ready to Ride the App Modernization Journey?
Auto Scaling – Finding the Limits
Scaling in the cloud refers to adding and reducing the number of instances you are running. Without hardware constraints, you can scale your resources in and out in a matter of minutes and you can automate the process with auto scaling. Knowing what threshold to scale out at is crucial to ensuring you don’t see a drop in your application performance. The threshold to scale in is just as important as it allows you to reduce costs without sacrificing performance.
It is critical that the infrastructure you are configuring for autoscaling has already been right sized before you try and find the correct scaling thresholds. Once the right sizing has been complete, you can start finding your scaling limits. Start by ramping up to 2-3 time the average expected load. As you increase the load, response times should begin to increase as the application struggles to keep up.
Using the Application Performance Management services mentioned earlier, as well as your infrastructure’s performance metrics, you should be able to identify a resource threshold where the slowdown begins. You should use this as your scale out metric, and pick a scale in metric that is 2-3 times lower than the metrics baseline during average load.
NOTE: Fine tuning auto scale settings is usually an iterative process. You might have to repeat this a few times to get autoscaling tuned just right.
You may also enjoy: 6 Steps to successful autoscaling on Kubernetes
Why Perficient?
We’ve helped clients across industries develop strategic solutions and accelerate innovative cloud projects. As a certified Azure Direct Cloud Solution Provider (CSP), we help you drive innovation by providing support to keep your Microsoft Azure operations running.
Whether your IT team lacks certain skills or simply needs support with serving a large business, we’re here to help. Our expertise and comprehensive global support will help you make the most of Azure’s rich features.
Contact our team to learn more.
Leave A Comment