Cloud Computing

Introduction

CC can broadly be defined as a computing technology that relies on off-premise central servers for the delivery, using and maintenance of applications (Saas/Paas/Iaas).

Basics

  • The predominant model for cloud computing today is called infrastructure as a service or Iaas.
  • Virtualization allows a physical piece of hardware to be utilized by multiple operating systems. This allows resources (e.g. bandwidth, memory, CPU) to be allocated exclusively to individual operating system instances. It further enhances flexibility because it abstracts the hardware to the point where software stacks can be deployed and redeployed without being tied to a specific physical server.
  • IT organizations can choose to deploy applications on public, private, or hybrid clouds, each of which has its trade-offs. Public clouds can be shared between people and organizations but one organization can have its own private cloud on their own premises.
  • Cloud service providers tend to offer services that can be grouped into three categories: software as a service, platform as a service, and infrastructure as a service. These categories group together the various layers illustrated below.
  • Grid computing is a predecessor to cloud computing in that it uses tools to provision and manage multiple racks of physical servers so that they all can work together to solve a problem
  • In a networked environment, it is sometimes more efficient (faster, less latency) to calculate a value than it is to retrieve it from networked storage. Consider the trade-off between using compute cycles and moving data around.
cloud1.jpg

Platform as a service

Encapsulates a layer of software and provides it as a service that can be used to build higher-level services. There are at least two perspectives on PaaS depending on the perspective of the producer or consumer of the services:
* Someone producing PaaS might produce a platform by integrating an OS, middleware, application software, and even a development environment that is then provided to a customer as a service. For example, someone developing a PaaS offering might base it on a set of SunTM xVM hypervisor virtual machines that include a NetBeans integrated development environment, a Sun GlassFish Web stack and support for additional programming languages such as Perl or Ruby.
* Someone using PaaS would see an encapsulated service that is presented to them through an API. The customer interacts with the platform through the API, and the platform does what is necessary to manage and scale itself to provide a given level of service. Virtual appliances can be classified as instances of PaaS. A content switch appliance, for example, would have all of its component software hidden from the customer, and only an API or GUI for configuring and deploying the service provided to them.

Infrastructure as a service

Delivers basic storage and compute capabilities as standardized services over the network. Servers, storage systems, switches, routers, and other systems are pooled and made available to handle workloads that range from application components to high-performance computing applications.

Loose-coupled, stateless, fail-in-place computing

For years, Web-based applications have been moving toward being loose-coupled and stateless. In cloud computing, these characteristics are even more important because of cloud computing’s even more dynamic nature. Application images are not patched, they are throwaway objects and thus need to be stateless. If a virtual machine fails, the application must continue to run interrupted. Coupling between application components needs to be loose so that a failure of any component does not affect overall application availability. A component should be able to “fail in place” with little or no impact on the application. As application components become increasingly transient, they cannot contain data that must persist beyond any application instance. Applications should be made as stateless as possible by pushing the state out of the software, separating processing and data as much as possible. Techniques for doing this include:

  • Push state out to the user in the form of cookies or state coded into URLs
  • Push state down to a back-end database
  • Maintain additional copies of data, a strategy used by Hadoop
  • Use network-based persistence, for example Terracotta or Shoal in a GlassFish application server

API

  • jclouds
  • eucalyptus
  • openstack

Sharding

Sharding is usually done horizontally ; splitting up rows into separate partitions. Each individual partition is referred to as a shard or database shard. Partitioning data means the total number of rows in each table is reduced. This reduces index size, which generally improves search performance.

Reference

  • "Introduction to cloud computing architecture” white paper from Sun - June 2009
  • Internet
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License