Abstract
In this white paper we talk about how you can integrate on-premise and cloud-based options to build an effective performance testing strategy. We will also discuss the available cloud-based performance testing solutions and whether they can effectively fill the gap areas created by the on-premise approach. Finally, we share our recommended strategy which incorporates both on-premise and the cloud approach and presents a robust performance testing plan.
Table of Contents
Introduction .............................................................................................. 2 Limitations of the on-premise approach .................................................. 3 Benefits of cloud-based load testing ........................................................ 3 Challenges facing the cloud-based approach ........................................... 4 Data security ................................................................................ 4 Testing intranet applications ....................................................... 5 Repeatability and consistency ..................................................... 5 Debugging and bottleneck identification .................................... 5 Cloud-enabled solutions ........................................................................... 6 Using on-premise tools in the cloud ............................................ 6 Provisioning the tool from the cloud ........................................... 7 The Hybrid approach ................................................................... 7 Impetus recommendations ..................................................................... 8 Conclusion............................................................................................... 11
Introduction
Performance engineers worldwide are harnessing the infinite computing power of the cloud to test the performance of their web, mobile and cloud applications. The immense popularity of cloud-enabled performance testing is based on the fact that it helps to overcome the limitations of a test strategy that relies entirely on on-premise performance testing. However, before moving to cloud-based performance testing, it is important to examine the on-premise model, so called, because all its components including the tool, recorder, controller, system under test, etc., are deployed within the local environment.
The other significant aspect that we have to consider is that the on-premise model does not measure up to the realistic simulation of user behavior. Since your application will get hits from all corners of the globe, it is important that its performance is measured from multiple geographies. Also, while conducting the tests from within the local environment, we ignore aspects such as network latency, firewall behavior, DNS servers and other important components in the end-to-end delivery chain. By doing this, we might not be testing the actual user experience. These are some of the limitations of the traditional on-premise approach. cloud-enabled performance testing can address these gap areas. At Impetus, we believe that performance testing with the cloud enables testing teams to take a big step forward in conducting more efficient and realistic, large scale tests. Moreover, cloud technology enables organizations to realize significant savings in cost and time.
it. From a business standpoint, the cloud lowers the Total Cost of Ownership (TCO), while increasing flexibility. Often, the web application experiences sporadic surges in traffic. Generating the load for large scale tests to mimic these unanticipated spikes in the production traffic, may require tens or even hundreds of machines. While purchasing and configuring these systems requires a significant investment in time and money, with the cloud, you can rapidly set up as many load generating machines as you need, on-demand using automated provisioning of required hardware. Automated provisioning ensures that the load generators are consistent and optimized to create the desired load. Another advantage that the cloud offers is the realistic simulation of test scenarios. With the cloud, you can execute load tests that access your web application as your users willfrom the outside of your firewalland validate all the infrastructure components, including the firewall, DNS, network equipment, and ISPs. These tests are significantly accurate and enable you to evaluate the real-world effects of third-party components, such as content delivery networks, analytics servers, and ad servers. And since your users will not access your application from one particular geographical location, a realistic load test will require simulation from different geographies. This can be achieved via the cloud. Cloud-based solutions can also be accessed via browsers from multiple devices, such as your PCs, Smartphones, Tablets, etc., and therefore, you can choose to run and analyze performance tests from anywhere, anytime. While cloud-based solutions offer several benefits for performance testing, the cloud does have its own set of limitations. Lets see what they are.
Cloud-enabled solutions
These solutions can be classified into three major categories. The first and simplest solution is to move the current on-premise tool to the cloud, as it is. A few companies also offer automated Ccoud provisioning portals for load generation, as well as executing and controlling tests. The first two categories have a few limitations and hence a third category called the Hybrid approach is in place. This involves using on-premise tools to generate on-demand load, using the cloud. It supports high concurrency testing while still providing the benefits of a controlled environment and security. Impetus recommends a two-phase approach, which we believe brings the best of on-premise and cloud options and can help you to build a successful performance testing strategy. Let us examine each of these strategies in detail:
This model is suitable to test cloudbased applications or Internet applications, since these get hits from all parts of the world. The scenarios can be designed in a manner that simulates a realistic load across multiple geographies.
APIs. The instances can only be accessed via RDP, Putty or SSH, which involve physical connection to the machines. Also, the test data resides in the cloud and after the instance is terminated can be lost. The user has therefore to come up with an appropriate data archival strategy before terminating the instances.
Impetus SandStorm enables you to provision the tool from the cloud. One of the major benefits of this approach is on-demand load generation, which means the user can scale its load tests at any given time. Pre-created instances help in quick scaling of the load tests. This process is suitable for mobile and cloud-based applications that have a large user base, and scales quickly.
It is also difficult to identify performance bottlenecks in such cases, as the number of variables is relatively high. This approach is well suited for measuring the end user experience and exercising the entire delivery chain including firewalls, ISP, CDN, routers etc. in a typical application deployment. Now, let us talk about the Hybrid approach that tries to address the limitations of the earlier two approaches.
This is because regular testing can be done on premise not only to get the performance numbers, but also to determine the bottlenecks in the application. In case there is need to test an application with peak volumes, high concurrencies and more transactions, the Hybrid model can be used.
We have the load generators on the cloud and all the other components, such as, the controller, recorder and analyzer on-premise. This model is more suitable for organizations which have already invested in performance test labs and have a hardware set up. These organizations can use the Hybrid model when they need to scale
Impetus SandStorm and a few other tools offer this option. The controller is deployed on-premise in this model and enables you to use the integrated resource monitoring and diagnostic features of the tool. This also helps address any security concerns over the crucial data as the controller remains in-house. Since the data is available locally, it can be archived and referred to at any suitable time. This model too suffers from a couple of limitations related to remote access and parallel test executions. Since, the controller is installed within the local network; the tests can only be executed via physical access to these machines.
Impetus recommendations
We will now talk about some of the work we have done and the best practices we have deployed successfully across multiple customer engagements. These best practices can help you maximize the advantages, and minimize the challenges of load testing with the cloud. As we discussed earlier, while the on-premise approach has numerous limitations, it cannot be replaced completely by the cloud. And while cloud offers scalability along with cost-effectiveness, it also has some pertinent challenges associated with it. Therefore, let us examine the fourth approach that integrates the cloud and on-premise solutions for a successful and effective performance testing strategy. The on-premise model is suitable for initial performance tests and debugging and forms the first stage of our process. You can use the local environment to create test scripts, prepare test data, and validate the test scripts for runtime data changes. Then, can you conduct internal tests with a medium load to quickly identify and resolve preliminary issues.
The source of any issue identified in the first stage is clearly within the firewall (because no other external systems are involved in the test, as of now). Therefore, it is easier to pinpoint and fix internal problems when they are not being compounded by other issues that will originate outside the firewall. With this two-stage process, you do not have to wait for the application to be deployed and accessible from the Internet to test it. You can test the application internally, and earlier in the application lifecycle, when the defects are easier and less expensive to fix. With internal testing, you have much more control over the environment, so you can precisely measure the effect that a code or a configuration change might have on the application performance. The tests are repeatable, and therefore, the tuning/optimization changes can be quickly validated. This approach also helps in creating scripts locally, and retains them for scaling at a later stage, using the cloud. After the performance has been validated internally, you can proceed to the second stage, which is cloudbased load testing. The cloud can be used to test large scale, a peak load that validates the entire delivery chain of the application. You can compare the results of the same test scenario run internally and from the cloud, to get a better handle on how the application server and network infrastructure contribute to the overall response times. cloud testing is based on pay-per-use model, and since you have already tested the application internally on your existing hardware setup, you have an option to reduce the amount of cloud testing and save on costs. You can also detect potential network issues at the cloud provider level. And having gone through this model, we will talk about the best practices associated with using cloudbased performance testing solutions. As discussed, one of the primary concerns of users is data security. We recommend encrypting the communication between your controller and load generators. This will help secure the data sent to the load generators during the test (including account information), as well as the data that is retrieved (including error messages). If possible, use SSL to secure the communication between the browser and the test server. Finally, ensure that your load generators are secured with their own firewalls to protect them from outside threats. To ensure that your load generator machines in the cloud are capable of generating larger loads, we would recommend tuning the system to support the creation of a high number of sockets and threads per process. Additionally, allocating an appropriate heap size for Java-based load generators will help in such scenarios. The default settings for a typical machine allow all programs to share resources fairly. In the case of load generators, the machine is dedicated
9
to a single task, so you can improve the performance by allocating a significantly larger share of the available resources to the load generation tasks. Automated provisioning can also save time and efforts to scale the test environment to support high concurrency and transaction volumes. It also makes sure that the load generators are consistent and optimally tuned as they are generated from a single image. We recommend using an integrated solution for on-premise and cloud. If the solutions are interoperable, it reduces the learning curve for the team. The test scripts, scenarios can be re-used internally as well as on the cloud. Having covered the four available cloud-based performance testing solutions, we would like to point out that Impetus two-phased approach appears to meet all the criteria of a robust performance testing strategy. Almost all other approaches, other than cloud provisioning, need tool familiarity. Even the cloud provisioning option does not allow reuse of the scripts created locally for large scale testing from the cloud. A major advantage that the cloud provisioning and Impetus approaches offer is the ability to run multiple tests in parallel. This is very critical for large organizations where multiple parallel releases are happening for different applications. Another advantage is that they both provide browser-based testing to simulate the end user experience. This is very important, owing to the rapid changes taking place in client side technologies like HTML5, FLEX, etc. Each of these four solutions that we have spoken about have their own merits and demerits. The selection of specific tools depends on factors such as costeffectiveness, type of application, performance objectives, etc. We recommend that you establish the performance testing goals and then decide on the preferred solution.
10
Conclusion
At the end it can be said that organizations that use only lab testing or only cloud testing are at a disadvantage. This also holds good for the companies that use different cloud-based solutions for these activities. We at Impetus believe that a solution that integrates the on-premise and cloud-based approaches will be the most beneficial. We have put together a quick check list to help you decide when to choose an on-premise option vis-a-vis the cloud. The on-premise environment is a highly controlled one, hence it is well suited to preliminary, low-scale testing. You can start testing early in the development cycle when the code is not yet ready for high concurrency testing. This helps in resolving performance issues early. Also, since the environment is consistent, it ensures repeatability of the tests. Any code change and tuning can be quickly certified for performance improvements in case of on-premise. The cloud, meanwhile, offers elasticity on demand i.e. large scale tests with high concurrency can be executed anytime. There is no need to procure additional hardware, licenses etc. This is well suited for applications that can scale quickly, such as mobile and cloud applications. From the cloud, we exercise the application under test from an external world, thus bringing in the CDN, ISP and routers etc. in the picture. This is very similar to how an end user will be using the system.
About Impetus Impetus Technologies offers Product Engineering and Technology R&D services for software product development. With ongoing investments in research and application of emerging technology areas, innovative business models, and an agile approach, we partner with our client base comprising large scale ISVs and technology innovators to deliver cutting-edge software products. Our expertise spans the domains of Big Data, SaaS, Cloud Computing, Mobility Solutions, Test Engineering, Performance Engineering, and Social Media among others. Impetus Technologies, Inc. 5300 Stevens Creek Boulevard, Suite 450, San Jose, CA 95129, USA Tel: 408.213.3310 | Email: inquiry@impetus.com Regional Development Centers - INDIA: New Delhi Bangalore Indore Hyderabad Visit: www.impetus.com
Disclaimers
The information contained in this document is the proprietary and exclusive property of Impetus Technologies Inc. except as otherwise indicated. No part of this document, in whole or in part, may be reproduced, stored, transmitted, or used for design purposes without the prior written permission of Impetus 11 Technologies Inc.