and ‘utility computing’. The services provided, the APIs and the applications thatcan be hosted by these Cloud providers have superseded the use of the Grid, andare increasingly becoming popular with users. There are obviously two sides to the services that are provided by Cloud providers: those that are supplied by commercial entities, such as Amazon and Google, and those that are open-source systems, such as Open Cirrus1 and Eucalyptus. There are currently three cloud-based delivery models. Software as a Service. (SaaS), where the consumer uses an application, but does not control the operating system, hardware or network infrastructure. In this situation, the user steers applications over the network. Next is Platform as a Service (PaaS), where the users host an environment for their applications. The users control the applications, but do not control the operating system, hardware or network infrastructure, which they are using.
Finally, there is Infrastructure as a Service (IaaS), where the user accesses ‘fundamental computing resources’ such as CPU, memory, middleware and storage. The consumer controls the resources, but not the cloud infrastructure beneath them. Service providers try to provide simplified software installation, maintenance and a centralised control over the software used. The end-users can access the cloud-based services ‘anytime’ and from ‘anywhere’. Naturally, this type of access is based on the bandwidth that a user has over the Internet and therefore poor interconnections mean that the use of cloud-based resources is not viable. Unfortunately, most current cloud-based systems use different APIs and protocols, which means that collaboration and sharing of data is difficult at this point in time. It is interesting that the Open Grid Forum is looking at Cloud-based API and protocols, so that systems can share and work together in the future. Many users and organisations are uncomfortable with the idea of storing their data and applications on system infrastructure and services they do not control. In addition, migrating workloads to a shared infrastructure increases the potential for unauthorised access and exposure of sensitive data. Cloud-based systems need to be consistent around authentication, identity management, compliance and access-related technologies, which are becoming increasingly important. Within the cloud-security model, the user needs to trust the vendor’s security model, consider a customer’s inability to respond to audit findings, potentially obtain support for investigations, deem indirect administrator accountability, ensure that proprietary implementations cannot be examined, and cope with the loss of physical control on the remote clouds being used. In addition, it may be a case that a user wants to use sensitive data on a cloud-based system, in which case it would be useful to be able to encrypt the data so that it is safe and cannot be stolen by other users. There is also a need on cloud-based systems for Quality of Service (QoS) and Service-Level Agreements (SLAs). he contract between customers and service providers needs to be negotiated and agreed. Various performance metrics (e.g., uptime, throughput, and response time) need to be guaranteed to the users. Also, certain management details need to be exposed to the users of the system. This aspect of the service will require logging and efficient monitoring of the resources used by the users, so that they can see that they are potentially accessing the resources that were originally negotiated. There also needs to be well-documented security capabilities provided to the users, and the providers must recompense users where there are penalties for non-performance. Cloud computing relies on separating user applications from the underlying infrastructure using virtualisation.
The host operating system provides an abstraction layer for executing a virtual guest operating system. A key aspect of virtualisation is the ‘hypervisor’ and potentially the ‘virtual machine monitor’. Cloud-based systems use para-virtualisation, which includes a binary bus between the various virtual machines that are being executed. Para-virtualisation provides a much faster and more efficient virtualisation system than other virtual systems. Virtualisation enables the guest operating systems to execute in isolation of the other operating systems, and it also enables a range of legacy applications to be run. In addition, on a Cloud-based system, it is possible to run multiple types of operating systems across the system, which potentially also helps to increase the utilisation of physical servers. Virtualisation also allows the portability of virtual servers between physical servers and it can increase the overall security of the physical host server. It is well known for example that many HPC applications are only 15–20% efficient, and it is possible when executing these applications on Cloud-based services that overall there is better program efficiency. In addition, for HPC applications, the system will also need to be able to schedule the virtual machines (VMs) efficiently, as it will be important that the constituting parts of the application are placed closely together to reduce communication latencies and give high inter-VM bandwidth as well. Another aspect is that the Cloud-based systems have the possibility to optimise the use of resources, reduce the amount of electrical power used as well as the capability to provide efficient Green IT computing. An unfortunate aspect of current Cloud-based systems is the hyperbolae and publicity broadcast about them, without detailed information about the services, protocols and applications that can be executed on these systems. Just like previous distributed systems (e.g. CORBA, Jini and the Grid), it is very important for the potential end-user to know about the architecture, services, protocols, inter-operability, security, scalability and performance, reliability, user interfaces and potentially payment for services in the context of Cloud computing. This book provides a thorough and timely examination and exploration of the services, interfaces and the types of applications that can be executed on Cloudbased systems. In addition, the book discusses the interfaces used to access the underlying services, the pros/cons of using virtualisation, the range and scope of applications that can be executed, the security used by these services, the user interfaces and aspects such as service-level agreements and the quality of service provided. The applications that execute on a Cloud-based system need a computational model, storage capabilities and potentially inter-process/thread communication. In addition, it is important to understand the scalability and performance capability of the systems being used. This book covers a wide range of topics related to Clouds and it includes chapters about tools and technologies for building Clouds, taxonomies of cloud-based systems and analysis of security and data confidentiality issues. There are discussions about the interoperability challenges related to the numerous protocols and APIs, methods for mixing Grids and Clouds together, resource management tools, potential Peer-to-Peer cloud-based provisioning, the policies, economics and costs-based benefits of Clouds, as well as Service-Level Agreements in Grids and Cloud-based systems. Therefore, it will be a useful tool for researchers and professionals aiming to understand and use Cloud systems for scientific and commercial purposes.