Cloud computing has recently been the focus of much excitement in the IT community. For decades, when organizations needed to increase their data and computation capacity, they had two options: purchase more hardware if the budget permitted, or make the IT operation more efficient and lean (but this limited the potential growth of the business constrained by the resources). Today, cloud computing offers a drastically different and affordable approach to IT resource delivery: lease the data and processing capacity you need from a “cloud” (pool) of interconnected, shared computing systems that are maintained by cloud service providers. Cloud computing benefits such as agility, elasticity, availability, and cost-efficiency are well known, due to cost-saving through larger economies of scale and flexible resource allocation schemes provided by different cloud services.
However, the software that makes this possible must be engineered specifically for the different cloud platforms currently available in the market. While some newer software is written specifically for the cloud, many organizations wish to migrate their existing applications to different cloud platforms. Because this migration work is a relatively new approach, it is nontrivial. Some changes need to be made to deal with software environment differences such as programming models and data storage, and there are still many open issues involving requirements engineering, architecting and design, quality assurance, development methods and platforms, management approaches, security, and deployment options. Each of these aspects must be addressed when engineering practical cloud-based services and solutions, especially if services are intended for use in an industrial environment.
This special collection of articles from the Computer Society Digital Library highlights just a few of these important challenges. The first article, “Cloud Data Protection for the Masses,” describes a new cloud platform architecture called Data Protection as a Service, which dramatically reduces the per-application development effort required to offer data protection, while still allowing rapid development and maintenance. To analyze the dependability of cloud services, the authors of “On the Performance Variability of Production Cloud Services” analyze long-term performance traces from Amazon Web Services and Google App Engine. They also study the performance variability of cloud services for three large-scale applications. The authors of the third article, “Security Challenges for the Public Cloud,” outline several critical security challenges and motivate further investigation of security solutions for a trustworthy public cloud environment.
One major challenge to enterprise adoption of cloud technologies has been the lack of visibility into migration effort and cost. In “Size Estimation of Cloud Migration Projects with Cloud Migration Point (CMP),” the authors’ new methodology recasts the Function Point software size estimation model into the cloud migration context. The next article is from the current edition of the IEEE Software: “Environmental Modeling for Automated Cloud Application Testing” describes an approach to generating test inputs and different cloud states by simulating the behavior of the real-time environment, thus achieving high structural test coverage of the cloud application under development. Their approach allows developers to exhaustively test cloud applications hosted on the Azure platform, and their work advances support for cloud development processes, automated software engineering techniques for the cloud, and cloud application quality of service.
The last article, “Decision Support Tools for Cloud Migration in the Enterprise,” describes two tools that aim to support decision-making during the migration of IT systems to the cloud. The first is a modeling tool that estimates the cost of using public infrastructure-as-a-service (IaaS) clouds. The tool can be used to compare the cost of different cloud providers, deployment options, and usage scenarios. The second tool is a spreadsheet that outlines the benefits and risks of using IaaS clouds from an enterprise perspective; this tool provides a starting point for risk assessment.
Finally, in an audio interview with James Whittaker, an engineering director at Google, IEEE Software‘s editor in chief Forrest Shull explores some of the important trends in cloud computing, testing, and their implications.
We hope you enjoy this month’s special theme on cloud computing. Please leave a comment and let us know what you think.
I wish to thank John Grundy, Gerald Kaefer, and Anna Liu, my co-guest editors of IEEE Software‘s March/April 2012 issue on cloud computing. I based this Computing Now introduction on the guest editor introduction we wrote for that issue, entitled “Software Engineering for the Cloud.”
Jacky Keung is an assistant professor in the Department of Computing at the Hong Kong Polytechnic University. His research interests include cloud computing, empirical software engineering, machine learning, data-intensive analysis, software measurement and its applications to cloud computing, and software cost estimation. Keung has a PhD from the University of New South Wales. He is a member of the Australian Computer Society, Hong Kong Computer Society, ACM, IEEE, and IEEE Computer Society. Contact him at firstname.lastname@example.org.