In the last few years, the Cloud has evolved from being just a concept to one of the most disruptive technologies of our times. According to Gartner, the global cloud services market is projected to grow “16.5 percent in 2016 to total $204 billion, up from $175 billion in 2015”. It is estimated that SaaS and PaaS spending will reach $12B in 2016, growing to $55B in 2026. Data from the Synergy Research Group shows that the IaaS and PaaS markets achieved a “growth rate of 51%, followed by private & hybrid cloud infrastructure services at 45%” in 2015. These big numbers are because Cloud adoption is on the accelerating – the fifth annual State of the Cloud Survey reveals Private cloud adoption increased from 63% to 77% and more than “17 percent of enterprises now have more than 1,000 VMs in public cloud, up from 13 percent in 2015.” These upward trends in Cloud technology show that organizations, both big and small, have realized the obvious advantages of adopting the Cloud. These come in the form of agility, scalability and cost effectiveness to name a few. Adopting the Cloud has enabled business transformation by reducing IT infrastructure costs and increasing collaboration of teams across geographical boundaries. While initially, security was one of the top cloud challenges, today it is no longer so. This has created a deep and wide need for cloud products and apps that can be developed and hosted in the cloud environment. These clouds (or SaaS) products, provide extreme scalability and fault-tolerance along with being cost-effective – clearly their intrinsic character is different and so are the factors to be considered while developing them.
- Multi-tenancy is the key to a successful cloud product as it enables sharing of application infrastructure with all concerned users using the same hardware infrastructure.
- Using new and relevant technologies such as JavaScript, HTML5, CSS3, jQuery in creating these products thus becomes an imperative as legacy technologies such as Flash and Silverlight may not support these capabilities.
- Cloud products also have a demand a high degree of configurability and connectivity so that the users can adapt these to their business demands, more or less on-the-fly.
- Cloud products are, almost by definition, highly scalable to add users or increase transactions within the application as per the business requirements of the users.
- Cloud application developers thus have to ensure that adding new resources or users does not disrupt the product functionalities and cause outages.
While there are several layers involved in developing cloud products, testing these products to ensure great usability becomes just as critical. Since these products are developed differently than traditional applications, testing them too has to take a new approach.
- The focus of cloud product testing has to be more on SLA adherence, testing the interfaces between components and product performance than on backward compatibility, versioning etc.
- Considering the use of shared resources, testers have to ensure that testing application performance and shared resources simultaneously to ensure that application performance remains unaffected with and increase or decrease in the number of users.
- Load testing and performance testing assume critical importance for cloud products. Simulated peak performance tests, tests to check for multi-browser compatibility, interface backward compatibility, test accessibility, etc. become an essential part of the test plan.
- Testers also need to be focused on security testing and perform access control and multi-privilege tests to ascertain data privacy. They have to ensure that they create security tests throughout the entire cloud infrastructure, within, without and across, to ensure application and business data security. Additionally, they need to test both network and architectural risks to ensure complete product security.
- Considering the many aspects of a cloud product, one of it being scalability, testers also need to simulate live upgrade tests to assess the efficacy of upgrades in a cloud environment. They will also need to check how the application performs when multiple users, across geographies, log in simultaneously to use it.
Since changes and upgrades are pivotal in a cloud environment, it builds a pretty strong case for a, well, sustained focus on sustenance engineering. When building cloud products, along with testing, organizations also have to take a close look at the sustenance plan on offer as product iterations, upgrades, bug fixes, security patches are frequent. Sustenance engineering too thus has to follow the continuous delivery model and ensure workflow continuity so that the product performance is not impaired even for a moment and businesses get better ROI from their designated budgets. We are seeing this all around us – the world of products and product development has changed to become more aligned with the new Cloud reality. Making that shift involves recognizing that developing and testing cloud products and apps is different in its own specific way while still retaining the fundamentals of great product engineering. Happy Cloud Development!