Cloud Computing

NIST definition of cloud computing Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.

Layers of Cloud Computing

Layers of Cloud Computing

The main idea behind cloud computing is not a new one. Remote servers have been used from a very long time now. Just the need for more space took over the idea over the multi functionalities of Cloud computing. Grid Computing, Utility Computing, Virtualization, Autonomic Computing, etc are the few of the related technologies which have gained popularity with the advent of Cloud Computing.

We’ll be focusing on the research challenges that Cloud Computing is facing in present day scenario:

  • Automated service provisioning
  • Virtual Machine Migration
  • Server Consolidation
  • Energy Management
  • Traffic Management and Analysis
  • Data Security
  • Software Frameworks
  • Storage Technologies and data management
  • Novel Cloud Architecture

To the technological aspects belong in particular issues related to (1) scale and elastic scalability, which is not only currently restricted to horizontal scale out, but also inefficient as it tends to resource over usage due to limited scale down capabilities and full replication of instances rather than only of essential segments. (2) Trust, security and privacy always pose issues in any internet provided service, but due to the specific nature of clouds, additional aspects related e.g. to multitenancy arise and control over data location etc. arise. What is more, clouds simplify malicious use of resources, e.g. for hacking purposes, but also for sensitive calculations (such as weapon design) etc. (3) Handling data in clouds is still complicated – in particular as data size and diversity grows, pure replication is no viable approach, leading to consistency and efficiency issues. Also, the lacking control over data location and missing provenance poses security and legalistic issues. (4) Programming models are currently not aligned to highly scalable applications and thus do not exploit the capabilities of clouds, whilst they should also simplify development. Along the same line, developers, providers and users should be able to control and restrict distribution and scaling behaviour. This relates to (5) systems development and management which is currently still executed mostly manually, thus contributing to substantial efficiency and bottleneck issues.

On the other hand, non-technological issues play a major role in realizing these technological aspects and in ensuring viability of the infrastructures in the first instance. To these belong in particular (1) economic aspects which cover knowledge about when, why, how to use which cloud system how this impacts on the original infrastructure (provider) –long-term experience is lacking in all these areas; and (2) legalistic issues which come as a consequence from the dynamic (location) handling of the clouds, their scalability and the partially unclear legislative issues in the internet. This covers in particular issues related to intellectual property rights and data protection. In addition, (3) aspects related to green IT need to be elaborated further, as the cloud offers principally “green capabilities” by reducing unnecessary power consumption, given that good scaling behaviour and good economic models are in place.

Let’s concentrate on the traffic control problem of Cloud computing architecture.

The use of virtualization and resource time sharing, clouds serve with a single set of physical resources a large user base with different users needs. Users paying only for the used resources and services by Service Level Agreement (SLA), without any knowledge of how a service provider uses a underlying computer technological knowledge. Therefore, the service provider is required to execute service requests from a user by maintaining quality of service (QoS) requirements. Queuing systems in which arriving customers who find all servers and waiting queue (if any) occupied may retry for service after a period of time are called Retrial queues [1, 2], because of the complexity of the retrial queuing models, analytic results are generally difficult to obtain. There are a great number of numerical and approximations methods available. The M/Ek/1 queuing system with cloud computing service station is very useful to provide basic framework for efficient design and analysis of several practical situations including various technical systems. Multiple servers in Cloud computing has several advantages, i.e. the system performance increases effectively by reducing the mean queue length and waiting time than compared to the traditional approach of having only single server so that the users need not wait for a long period of time and also queue length need not be large.

This is mere example of how queuing models(Erlang distribution) can be implemented in Cloud Computing Architecture to improve the performance of it in terms of speed and traffic control.

Another two important aspects of Cloud Computing are storage and framework management, which have been dealt by google itself:

Distributed file system over clouds

Google File System (GFS) is a proprietary distributed file system developed by Google and specially designed to provide efficient, reliable access to data using large clusters of commodity servers. Files are divided into chunks of 64 megabytes, and are usually appended to or read and only extremely rarely overwritten or shrunk. Compared with traditional file systems, GFS is designed and optimized to run on data centres to provide extremely high data throughputs, low latency and survive individual server failures. Inspired by GFS, the open source Hadoop Distributed File System (HDFS) stores large files across multiple machines. It achieves reliability by replicating the data across multiple servers. Similarly to GFS, data is stored on multiple geo-diverse nodes. The file system is built from a cluster of data nodes, each of which serves blocks of data over the network using a block protocol specific to HDFS. Data is also provided over HTTP, allowing access to all content from a web browser or other types of clients. Data nodes can talk to each other to rebalance data distribution, to move copies around, and to keep the replication of data high.

Distributed application framework over clouds

HTTP-based applications usually conform to some web application framework such as Java EE. In modern data centre environments, clusters of servers are also used for computation and data-intensive jobs such as financial trend analysis, or film animation. MapReduce is a software framework introduced by Google to support distributed computing on large data sets on clusters of computers. MapReduce consists of one Master, to which client applications submit MapReduce jobs. The Master pushes work out to available task nodes in the data center, striving to keep the tasks as close to the data as possible. The Master knows which node contains the data, and which other hosts are nearby. If the task cannot be hosted on the node where the data is stored, priority is given to nodes in the same rack. In this way, network traffic on the main backbone is reduced, which also helps to improve throughput, as the backbone is usually the bottleneck. If a task fails or times out, it is rescheduled. If the Master fails, all ongoing tasks are lost. The Master records what it is up to in the filesystem. When it starts up, it looks for any such data, so that it can restart work fr

om where it left off. The open source Hadoop MapReduce project is inspired by Google’s work. Currently, many organizations are using Hadoop MapReduce to run large data-intensive computations.