Cloud computing is currently a major trend in the ICT industry. The wide spectrum of available Clouds, provides a vibrant technical environment, where small and medium enterprises can create innovative solutions and evolve their existing service offer.
Despite the richness of this environment, Cloud business models and technologies are in their initial hype and are characterised by many critical early stage issues which pose specific challenges from a software engineering perspective. This calls for a necessary evolution in service engineering methodologies that could revolutionise the way we tackle the challenges of Cloud computing.
The proposed evolution is motivated by the following challenges:
- Vendor Lock-in. According to several international sources, the risk of technological lock-in is a major concern for Cloud customers. Cloud providers, in fact, offer proprietary solutions that force Cloud customers to decide, at the early stages of software development the design and deployment models to adopt (e.g., public vs hybrid Clouds) as well as the technology stack (e.g., Amazon Simple DB vs Google Bigtable). Lack of past expertise in Cloud computing makes this a high-risk choice, especially for SMEs. This, if the target platform does not fulfil the original expectations, has potentially catastrophic business consequences. Thus, portability of applications and data between Clouds, as well as reversibility (moving applications and data from Cloud to non-Cloud environments) should be addressed.
- Risk Management. Late binding to a specific target Cloud during the design process can decrease project failure risks increasing the trust in Clouds. This is especially important in the current economic climate, where failures may have serious financial consequences for a SME. There are several concerns when selecting a Cloud technology such as payment models, security, legal and contractual, quality and integration with the enterprises architecture and culture. However, at present only embryonic tools and decision support methods exists to support selecting and binding to a specific target Cloud, or taking a decision to move in case requirements or services change.
- Quality Assurance. Cloud performance can vary at any point in time. Elasticity may not ramp at desired speeds. Unavailability problems exist even when 99.9% up-time is advertised. Given the criticality of many business applications, analytical techniques are needed to predict QoS and to reason on software systemsproperties at design-time, but also run-time mechanisms and policies able to provide end-to-end quality.