Cloud computing is quickly becoming one of the most important concepts in data management. The concept itself is relatively straightforward. A user moves data to the “cloud” and then accesses it when needed. The concept of a “cloud” comes from the habit of drawing the Internet as a fluffy cloud in network diagrams. The cloud therefore refers to many types of data storage done over the Internet. A similar concept was formulated by John McCarthy in the 1960s: he proposed a time-sharing computing server that served multiple users. Until 20 years ago when personal computers came into widespread use, data and programs were mostly located in local resources.
At the current stage, cloud computing is still evolving and there exists no widely accepted definition, but a working definition is as follows:
Cloud computing is a set of network enabled services, providing personalized, inexpensive computing platforms, which could be accessed in a simple way.
All cloud computing is a set of services that are provided to a customer over a network with the ability to tailor their service requirements based on customer demand. Usually cloud computing services are delivered by a third party provider who owns the infrastructure. There are two basic cloud models, each with several sub-models. The first is called the service model and the second is the deployment model.
The service model is broadly classified into three services: Infrastructure as a Service, Platform as a Service, and Software as a Service.
Infrastructure as a service: The main concept behind this model is virtualization. Virtualization is the process of creating a virtual environment of a computer platform as opposed to the actual version. Users have a virtual desktop and consume resources supplied by a cloud service provider. Examples: Storage services provided by AmazonS3, Amazon EBS etc.
Platform as a service: It refers to the platform that provides the runtime environment. A platform service is an environment where software can be developed, tested and deployed. It means an entire piece of software can be made on a platform service.. This service model is dedicated to application developers, testers, deployers and administrators. Examples: Google App Engine, Microsoft Azure, etc.
Software as a service: Customers consume the software application services directly over a network according to an on-demand basis. For example, Flickr is a software service owned by Yahoo. Yahoo is the provider and the users are consumers. The most familiar and widespread method of cloud computing is by the software as a service model.
There are four primary cloud computing deployment models.
Public cloud: This model allows an environment to be publicly accessible. Public cloud runs off the premise that various enterprises can be used to deliver the services to users by taking it from a third party.
Private cloud: This model referred to an environment which is managed by a company to provide control over cloud services and infrastructure. A private cloud is build specifically to provide the services within an organization a sense of security and privacy.
Hybrid cloud: This model uses both private and public cloud models where a cloud computing environment is hosted and managed by a third party but some dedicated resources are privately used only by an organization.
Community model: It allows a cloud computing environment which is shared or managed by a number of related companies.
Cloud systems have several advantages as well as challenges. Cloud computing has multiple opportunities from the principles for cloud infrastructures that will enable further types of applications, reduced development and provisioning time of different services. Cloud computing has particular characteristics that distinguish it from classical resource and service provisioning environments. It’s infinitely scalable (at least insofar as computing resources allows), cost saving, utilizes a higher amount of resources, is typically faster to distribute data, easier to back up, and is location independent.
While reducing IT costs is one of the main reasons for the adoption of cloud computing, there are also some other factors that encourage organizations adopting cloud computing. In static resource allocation configurations there inevitably exists a trade-off between capacity deployment and resource demand. Cloud computing shifts the location of resources to the cloud to reduce the costs associated with having too many resources, not using resources adequately, and having too little resources. It also reduces the time required to provision resources to minutes, allowing applications to quickly scale their utilization up and down, as the workload changes. Therefore, cloud computing is particularly well suited for applications with a variable workload that experience variability in utilization of resources. An example is university websites, which have to handle their peak loads during certain times. In traditional environments, over-provisioning and under-utilization can hardly be avoided. There is an observation that in many companies the average utilization of application servers ranges from 5 to 20 percent, meaning that many resources like CPU and RAM are idle at non-peak times. On the other hand, if the companies shrink their infrastructures to reduce over-provisioning and under-utilization, the risk of under- provisioning will increase. While the costs of over-provisioning and under-utilization can easily be calculated, the costs of under-provisioning are more difficult to calculate because under-provisioning can lead to a loss of users and zero revenue. Virtualization technology is also one of the primary reasons of the popularity of cloud computing because it provides a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software and virtualization technology. Through virtualization cloud computing removes the dependencies between software and the hardware that runs it.
Cloud computing has various motivating factors to adopt it, but there is still a long way to go for cloud computing to prove itself according to the organization’s trust level. There are various reasons that an organization may be wary of immediately adopting cloud computing.
Security issues have played the most important role in hindering cloud computing acceptance. Various security issues, possible in cloud computing are: availability, integrity, confidentiality, data access, data segregation, privacy, recovery, accountability, multi-tenancy issues and so on. Solution to various cloud security issues vary through cryptography, particularly public key infrastructure, the use of multiple cloud providers, standardization of APIs, improving virtual machines support and legal support.
It’s not very easy to move the applications from an enterprise to a cloud computing environment or even within different cloud computing platforms because different cloud providers support different application architectures which are also different from other application architectures.
Cloud computing services rely fully on the availability of the Internet as it works as a carrier in between the consumer and an Internet service provider.
In business applications, downtime is a common concern because every minute of downtime is time which important applications can’t be performed. Scalability is the best solution to increasing and maintaining application performance in cloud computing environments. But one of the main technological challenges of a cloud computing environment is vertical scalability because in a cloud environment elastic scalability is not only currently restricted to horizontal scaling, 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. Horizontal scaling is scaling through the addition of more machines or devices to the computing platform to handle the increased demand. Vertical Scaling, on the other hand, is the ability to scale the size of a server. Vertical scaling can handle most sudden peaks in application demand on cloud infrastructures. Traditionally, most businesses have been best served by using vertical scaling methods as long as possible and then scaling individual parts of application horizontally but in a cloud computing environment the scenario is changed and most businesses are usually served by using horizontal scaling because the most common operating systems do not support on-the-fly changes on the available CPU or memory to support this vertical scaling. Vertical scaling typically involves making significant changes to a server’s core configuration. Therefore, it’s better to perform such changes manually. When horizontal scaling is used together with vertical scaling, it ends up with an infrastructure that makes the most efficient use of computing resources.

Author