9 Tips for Test-Driving a Cloud Computing Service
A good cloud benchmark test needs to account for a variety of factors, from software quality attributes to backup and recovery.
Many businesses trust cloud services because they save money while providing fast and easy access to computing, network, and storage resources or out-of-the-box, ready-to-use services. For those that aren't yet committed to this computing model, test-driving a cloud service can help alleviate any lingering mistrust.
In general, organizations start thinking about testing a cloud provider at two stages:
- When they need to select a cloud provider but are confused due to the wide range of offerings.
- When a vendor has deployed a product/infrastructure on the cloud and they need to make sure that it covers their business needs.
Defining a benchmark for cloud testing can help make these two decision-making stages less stressful. Here are a variety of tips on how to define that testing benchmark.
- Identify software quality attributes (non-functional requirements) that may influence your project's success. Project teams usually take into account functional requirements, but with the cloud having a clear vision of non-functional requirements such as scalability, availability, continuity, and security is essential, too. When you identify non-functional requirements, figure out measurable indicators to know if your system meets your target quality attributes.
- Use a Quality Attribute Workshop to find the right balance of quality attributes for your organization. In most cases, different stakeholders have different views on the importance of non-functional requirements, so you'll need to find a common ground.
- Identify legislation and regulation risks. Business areas like healthcare or finance are strictly regulated, so make sure that your cloud and your product comply with the norms in the specific country where your data will be deployed.
- Define geography of the customer focus group. If you are targeting global product delivery, keep in mind that the network latency between regions is different. Server analysis company Takipi provides a good example of this in a recent blog about a speed test it performed on Amazon Web Services (AWS) Simple Storage Service and Elastic Compute Cloud services across regions. Its speed test showed how latency varies from region to region. For example, latency between AWS data centers in Virginia and Oregon is about 4.02 seconds, compared to 28.446 seconds between data centers in Virginia and Australia. In short, this means that end users located in the U.S. have fast access to the solutions deployed domestically, while customers in Australia may experience extremely slow service to those same resources. Keep geography in mind when planning performance tests.
- Carry out elasticity testing. One of the main benefits of the cloud is its elasticity -- meaning, its ability to release unused resources and to obtain additional resources in cases of a load growth. The cloud's elasticity brings value for businesses since cloud providers charge only for used resources. In theory, elasticity is easily achieved; however, in practice, most solutions root from traditional non-elastic data centers and this can cause issues in scaling an application. For example, virtual machine instances spun up in order to handle increased load for an application you've manually deployed may get lost in the auto-scaling process. The elasticity testing proves that your cloud infrastructure can be scaled up without service degradation.
- Do performance testing. Performance, one of the key target quality attributes, is measurable as application response time. In order to run performance testing, identify the geographic distribution of the customer focus group, the target number of named users that can work concurrently within a system, and the number of requests per second. When you have this information, you can define performance testing strategy, choose appropriate tools and solutions, and run performance testing to confirm that the application meets target non-functional requirements.
- Perform vulnerability testing. A cloud service, in most cases, keeps sensitive data so you definitely don't want to be hacked and have your data be compromised. In order to prevent such incidents, plan and run vulnerability testing that will detect open ports, weak encryption, system vulnerabilities, and other security weaknesses.
- Apply service reliability testing. An application that is running on a cloud is subject to transient failures. For this testing type you need to raise and get answers to the following questions:
- How does your application handle cases when a certain component is temporarily not available?
- Does your application have graceful degradation?
- Don't forget about disaster recovery and backup procedures testing. It is not enough to define backup and disaster recovery procedures and (maybe) automation. You also must test them and make sure they meet target requirements for recovery time objective and recovery point objective indicators.
Before you commit to a cloud computing service, be sure you take it out for a spin. Find out what to look for under the hood to ensure your cloud infrastructure drives like a dream.
Vadym Fedorov is a solutions architect at SoftServe, a leading global software application development and consulting company, and a regular blogger on the SoftServe United blog. Vadym has 12 years' experience in enterprise application development, as well as two years' experience in cloud and operations optimization.