Cloud Computing and Its Applications

The cloud computing reference model

A fundamental characteristic of cloud computing is the capability to deliver, on demand, a variety of IT services that are quite diverse from each other. cloud computing services offerings into three major categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as- a-Service (SaaS). These categories are related to each other as described in Figure 1.5, which provides an organic view of cloud computing.At the base of the stack, Infrastructure-as-a-Service solutions deliver infrastructure on demand in the form of virtual hardware, storage, and networking. Virtual hardware is utilized to provide compute on demand in the form of virtual machine instances.Platform-as-a-Service solutions are the next step in the stack. They deliver scalable and elastic runtime environments on demand and host the execution of applications. These services are backed by a core middleware platform that is responsible for creating the abstract environment where applications are deployed and executed. At the top of the stack, Software-as-a-Service solutions provide applications and services on demand. Most of the common functionalities of desktop applications. Each layer provides a different service to users. IaaS solutions are sought by users who want to leverage cloud computing from building dynamically scalable computing systems requiring a spe- cific software stack. IaaS services are therefore used to develop scalable Websites or for back- ground processing.

Describe Popek and Goldberg - Cloud Computing

Popek and Goldberg provided a classification of the instruction set and proposed three theorems that define the properties that hardware instructions need to satisfy in order to efficiently support virtualization. Theorem 1: For any conventional third-generation, a VMM maybe constructed if the set of sensitive instructions for that computer is a set of privileged instructions.This theorem establishes that all the instructions that change the configuration of the system resources should generate a trap in user mode and be executed under the control of the virtual machine manager.
Theorem 2:A conventional third-generation computer is recursively if:
  1. It is virtualizable and
  2. A VMM without any timing dependencies can be constructed for it.
Recursive virtualization is the ability to run a virtual machine manager on top of another virtual machine manager. This allows nesting hypervisors as long as the capacity of the underlying resources can accommodate that. Virtualizable hardware is a prerequisite to recursive virtualization.
THEOREM 3: A hybrid VMM may be constructed for any conventional third-generation machine in which set of user-sensitive instructions is a subset of the set of privileged instructions. There is another term, hybrid virtual machine (HVM), which is less efficient than the virtual machine system. In the case of an HVM, more instructions are interpreted rather than being executed directly. All instructions in virtual supervisor mode are interpreted. Whenever there is an attempt to execute a behavior-sensitive or control-sensitive instruction, HVM controls the execution directly or gains the control via a trap. Here all sensitive instructions are caught by HVM that are simulated.

Hardware Virtualization Techniques

Operating System Level Virtualization
  • To create different and separated execution environments for applications that are managed concurrently.
  • There is no virtual machine manager or hypervisor, and the virtualization is done within a single operating system.
  • OS kernel allows for multiple isolated user space instances.
  • chroot mechanism in Unix systems. The chroot operation changes the file system root directory for a process and its children to a specific directory.
  • The process and its children cannot have access to other portions of the file system.
Programming language-level virtualization
  • To achieve ease of deployment of applications, managed execution, and portability across different platforms and operating systems.
  • It consists of a virtual machine executing the byte code of a program, which is the result of the compilation process.
  • Generally these virtual machines constitute a simplification of the underlying hardware instruction set and provide some high-level instructions that map some of the features of the languages compiled for them.
  • Basic Combined Programming Language
  • Both Java and the CLI are stack-based virtual machines.
Application-level virtualization
  • Such emulation is performed by a thin layer - a program or an operating system component that is in charge of executing the application.
  • Interpretation - In this technique every source instruction is interpreted by an emulator for executing native ISA instructions, leading to poor performance.
  • Binary translation - In this technique every source instruction is converted to native instructions with equivalent functions. After a block of instructions is translated, it is cached and reused.
  • SaaS utilizes application-level virtualization to deploy the application

advantages and disadvantages of IAAS

IaaS advantages Organizations choose IaaS because it is often easier, faster and more cost-efficient to operate a workload without having to buy, manage and support the underlying infrastructure. With IaaS, a business can simply rent or lease that infrastructure from another business. IaaS is an effective cloud service model for workloads that are temporary, experimental or that change unexpectedly. For example, if a business is developing a new software product, it might be more cost-effective to host and test the application using an IaaS provider. Once the new software is tested and refined, the business can remove it from the IaaS environment for a more traditional, in-house deployment. Conversely, the business could commit that piece of software to a long-term IaaS deployment if the costs of a long-term commitment are less. In general, IaaS customers pay on a per-user basis, typically by the hour, week or month. Some IaaS providers also charge customers based on the amount of virtual machine space they use. This pay-as-you-go model eliminates the capital expense of deploying in-house hardware and software. When a business cannot use third-party providers, a private cloud built on premises can still offer the control and scalability of IaaS -- though the cost benefits no longer apply.
IaaS disadvantages Despite its flexible, pay-as-you-go model, IaaS billing can be a problem for some businesses. Cloud billing is extremely granular, and it is broken out to reflect the precise usage of services. It is common for users to experience sticker shock -- or finding costs to be higher than expected -- when reviewing the bills for every resource and service involved in application deployment. Users should monitor their IaaS environments and bills closely to understand how IaaS is being used and to avoid being charged for unauthorized services. Insight is another common problem for IaaS users. Because IaaS providers own the infrastructure, the details of their infrastructure configuration and performance are rarely transparent to IaaS users. This lack of transparency can make systems management and monitoring more difficult for users. IaaS users are also concerned about service resilience. The workload's availability and performance are highly dependent on the provider. If an IaaS provider experiences network bottlenecks or any form of internal or external downtime, the users' workloads will be affected. In addition, because IaaS is a multi-tenant architecture, the noisy neighbor issue can negatively impact users' workloads.

How do you implement IaaS?

When looking to implement an IaaS product, there are important considerations to make. The IaaS use cases and infrastructure needs should be strictly defined before different technical requirements and providers should be considered. Technical and storage needs to consider for implementing IaaS include:
  • Networking. When focusing on cloud deployments, organizations need to ask certain questions to make sure that the provisioned infrastructure in the cloud can be accessed in an efficient manner.
  • Storage. Organizations should consider requirements for storage types, required storage performance levels, possible space needed, provisioning and potential options such as object storage.
  • Compute. Organizations should consider the implications of different server, VM, CPU and memory options that cloud providers can offer.
  • Security. Data security should be of paramount importance when evaluating cloud services and providers. Questions about data encryption, certifications, compliance and regulation, and secure workloads should be pursued in detail.
  • Disaster recovery. Disaster recovery features and options are another key value area for organizations in the event of failover on VM, server or site levels.
  • Server Size. Options for server and VM sizes, how many CPUs can be placed onto servers, and other CPU and memory details.
  • Throughput of the network. Speed between VMs, data centers, storage, and internet.
  • General manageability. How many features of the IaaS can the user control, which parts do you need to control and how easy are they to control and manage?
During the implementation process, organizations should closely consider how the technical and service offerings of different providers fulfill business-side needs, as well as the business's own specific usage requirements. The market for IaaS vendors should be carefully evaluated; with considerable variance of capabilities within products, some may better align with business needs than others. Once a vendor and product are decided, it is important to negotiate all service-level agreements. Thorough negotiation with the vendor will make it less likely for your organization to be negatively affected by fine-print details that were previously unknown. Furthermore, an organization should thoroughly assess the capabilities of its IT department to determine how well equipped it is to deal with the ongoing demands of IaaS implementation. In the IaaS model, in-house developers are responsible for the infrastructure's technical maintenance -- including software patches, upgrades and troubleshooting. This personnel assessment is needed to ensure that the organization is equipped to maximize value on all fronts from an IaaS implementation.