Cloud Computing and SBSE

Global spend on Cloud Computing is estimated to be worth $131 billion and growing at annual rate of 19% [1]. It represents one of the most disruptive innovations within the computing industry, and offers great opportunities for researchers in Search Based Software Engineering SBSE. In the same way as the development of large scale electricity generation, the physical centralisation of computing resources that Cloud Computing involves provides opportunities for economies of scale [2]. Furthermore, it enables more extensive consolidation and optimisation of resource usage than previously possible: whereas in the past we have been resigned to the phenomenon of wasted spare cycles, the Cloud offers opportunities for large-scale consolidation, along with standardised measurement and control of resource consumption. There are two key stakeholders within the Cloud Computing sector: providers, such as Amazon and Google, and clients, the consumers of Cloud services paying for infrastructure and other utilities by the hour. Both providers and clients are greatly concerned with solving optimisation problems that determine their resource usage, and ultimately their expenditure. Example resources include CPU time, physical RAM usage, storage consumption, and network bandwidth. From the point of view of the provider, improving utilisation leads to greater return on capital investment --- hence the emergence of oversubscription policies [3], where more resources are promised to clients than are physically provisioned. Similarly, clients wish to reduce their resource demands because there is a direct relationship between resource consumption and operating cost. The rise of Cloud Computing has in many cases made explicit the cost of computation that was previously considered only as depreciation of capital investment. Example optimisation problems include: the configuration of servers, virtualisation, and operating systems to reduce storage and memory usage; transformation of software and architectures to adapt them to a Cloud platform; the intelligent placement of virtual machines to improve consolidation, reduce business risks and manage network usage; extensive, online and continuous testing to improve robustness; policy-level decisions such as management of scalability, demand modelling and spot market participation; [4]. A relentless focus on efficiency offers researchers in SBSE the opportunity to make an important contribution. The field has an established record in solving similar optimisation problems within software engineering, and treating non-functional concerns as first class objectives. The way in which software is deployed within Cloud systems also offers exciting possibilities for SBSE researchers, principally due to its centralised nature. Software is no longer deployed or versioned in the traditional manner, and this consequently enables dynamic, controlled and sometimes partial deployment of new code a procedure known as "canarying" [5]. A key insight is that many different versions of software can be employed simultaneously, and that manipulation of this multifaceted distribution solves some of the problems traditionally faced by SBSE practitioners. For example, consider recent work in bug fixing [6] [7]. One of the greatest challenges facing automatically and dynamically applying such work is ensuring that the existing semantics of a program are not disturbed in the process of correcting a bug. By running a form of N-Version programming on a Cloud platform, differences in behaviour caused by automated software repair could be rejected or reported. Similarly, the extensive use of virtualisation improves the repeatability of execution. Technologies such as Xen [8] provide snapshotting, enabling a virtual machine to be paused, cloned and restarted with some limitations. This lends itself to improving the robustness of automated repair and optimisation methods: we can rollback servers and examine hypothetical scenarios. Furthermore, due to the elasticity of the Cloud, we can quickly procure extra execution environments to test software on demand. Applying traditional SBSE work to the Cloud will not be straightforward, and requires further development of both theory and implementation: many problems in the Cloud are real-time and dynamic; there are competing objectives and complex relationships between concerns; the problems faced and the software itself are distributed. One exciting example of how we may begin to adapt to this environment is Yoo's proposed amortised optimisation [9]. The process of researching Cloud Computing is in itself a challenge, because the nature of the industry is secretive and closed. There is competitive advantage to be gained in proprietary technology, and as a result much detail of how deployed systems function is not available. Thus, we must occasionally re-invent the wheel and in some cases restrict ourselves to synthetic case studies or else recognise the limited reach we can have within certain subdomains. More pressing is the concern about research evaluation: how can we evaluate our research ideas effectively? This problem is not limited to SBSE alone. There are parallels with difficulties carrying out networking research, and we may adopt that field's existing methods of modelling, simulation, testbed construction, and instrumentation. A recent and novel alternative is to construct a scale model, such that a low-cost system with similar logical properties to a commercial Cloud can be used for prototyping [10]. In summary, the rise of Cloud Computing provides great opportunities for SBSE research, both in terms of the problems that SBSE may be used to solve, and also the capabilities that Cloud Computing provides, which offer truly new methods of deploying SBSE techniques.

[1]  Xin Yao,et al.  A novel co-evolutionary approach to automatic software bug fixing , 2008, 2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence).

[2]  Hakim Weatherspoon,et al.  Overdriver: handling memory overload in an oversubscribed cloud , 2011, VEE '11.

[3]  Stuart Hannabuss,et al.  The Big Switch: Rewiring the World, from Edison to Google , 2009 .

[4]  Fung Po Tso,et al.  The Glasgow Raspberry Pi Cloud: A Scale Model for Cloud Computing Infrastructures , 2013, 2013 IEEE 33rd International Conference on Distributed Computing Systems Workshops.

[5]  Claire Le Goues,et al.  GenProg: A Generic Method for Automatic Software Repair , 2012, IEEE Transactions on Software Engineering.

[6]  Mark Harman,et al.  Cloud engineering is Search Based Software Engineering too , 2013, J. Syst. Softw..