What exactly it means when we say "Performance Testing with Cloud". Before we get deep into this , let us first understand some basics about what exactly cloud is and how can we utilize cloud for our testing needs.
According to Gartner, the cloud is defined as
" a style of computing in which scalable and elastic IT-enabled capabilities are delivered as service to external customers using internet technologies."
Quite simple !!!! ..
This definition refers to following characteristics of cloud :
Technical translation of above will look like :According to Gartner, the cloud is defined as
" a style of computing in which scalable and elastic IT-enabled capabilities are delivered as service to external customers using internet technologies."
Quite simple !!!! ..
This definition refers to following characteristics of cloud :
- Scalability
- Larger amount of resources
- Offering end user services over internet
- Service Oriented - Focus is on "What" we need instead of "How"
- Elastic - Pay per use concept
- Scalable
- Internet connected
- Infrastructure as a Service (IaaS) - Here service delivery focus on delivery of Physical or virtual machines , firewalls , load balancers and network infrastructure.
- Platform as a Service ( PaaS) - Here service providers delivers a working platform which includes Operating Systems, development environment, data base , web servers and application containers etc. Use this service to develop application without worrying about licensing, buying and maintaining the platform.
- Software as a Service (SaaS) - This model ensures provision of executable applications in cloud which are directly accessible to end users. For Example - We can utilize performance test tools ( BalzeMeter, StromRunner etc) in cloud where we need not to worry about it's installation and maintenance , we just need to get access to it and start work on this. Another example could be New Relic application monitoring as a SaaS model of delivery.
Continuing on performance testing with cloud.. in order to perform performance testing activity what we really need :
- Performance Test environment which matches to production configurations
- Platform ( Web Server, App Servers , Load Balancers and Data Base)
- Performance Testing tool to simulate real user activities
- Performance Monitoring tool
Now we have two solutions with us in order to fulfill the same :
- In House Set up of Environment, Platform and related licensing aspects along with license procurement of all related testing and monitoring tools. This will lead to huge set up and maintenance cost.
- Use Cloud for desired services where all above performance testing needs can easily be satisfied with Iaas, PaaS and SaaS delivery models.
- Perform large scale tests - In order to simulate thousands users of traffic on your application , you need to invest a lot in required hardware and configuring such a big test environment is really very time consuming. Today , we have to meet demand of fast pace development models ( Agile ) and to achieve the same , cloud services can help us in greater extent as we have all this ready in few clicks.
- Perform more realistic tests - In order to performance test of your application which include complete delivery chain , we should target of testing application outside of our organization's firewall because if testing application inside firewall may fail to reveal all performance issues. With the help of cloud we can test application as real users will use application i.e outside of firewall and we can validate all components in delivery chain including firewall, DNS, ISP, network equipment.
- Save Time and Reduced Cost ( Pay per use) - As mentioned earlier, we may not need entire performance test environment available at all times , hence we can save lot with pay per use delivery model. We can create instance images and save these images to launch another instances at later point of time when needed.
Challenges of Performance testing with Cloud:
- Isolation of Root Cause - When we use cloud for performance testing activities , it becomes difficult to isolate the exact root cause of bottleneck discovered specially when we are not equipped with application performance monitoring tools. This technique is perfectly fine if there is a single source of bottleneck. Consider a situation when performance bottleneck is related to multiple problems both inside and outside the firewall. For this reason it is advisable to have an internal performance test environment where we can segregate root cause of performance problems inside firewall (if any).
- Reproducing tests - Reproduction of performance defect in cloud is quite difficult (specially when this is linked to infrastructure ) because of variation in internet traffic and bandwidth availability at data center level.
- Choosing right mix of computing needs - Some cloud providers delivers instances based on computing needs such as Amazon provides compute optimized and memory optimized instances. We should have clear understanding of computing needs at different layer of architecture such as App containers are most likely need Compute optimized instances where data base needs to be on memory optimized. Wrong decision can have impact on testing results.
Best Approach - Take Hybrid approach ( Internal + Cloud ) :
It is advisable to employ a two stage process where application should first be performance tested on internal testing environment with medium load conditions. By this way we will able to identify all design level issues. Once we are done with internal testing , we can move on cloud based testing to mimic real user behavior with large scale tests and can validate entire delivery chain. This approach offers following advantages:
- Enables early testing in development cycle
- Isolate design level issues before moving into large scale tests
- Enables reproducible tests
- Provides better understanding of each major area in delivery chain
- It lowers performance testing cost
No comments:
Post a Comment