4.1 Introduction
The cloud computing model intended for delivering IT services using the Internet improves partnership, quickness, availability, and scalability for users and enterprises. This enhanced and effective computing platform is delivered from side to side using technology infrastructure that’s regularly virtualized and that makes applications, data storage, processing power, and network resources be simply happened, managed, and secured from remote locations through public or private networks or the Internet.
In the cloud model that is includes five necessary characteristics: on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured services. As well it provides three service (delivery) models software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS) additional to four deployment models public, private, hybrid, or community (Figure 4.1 shows the main blocks for cloud computing).
Figure 4.1 Cloud computing basic blocks by The National Institute of Standards and Technology (NIST)
4.2 Essential Characteristics
4.2.1 On-demand self-service
A consumer supplied by a right privileges of permission can singly running computing abilities, such as server time and network storage, automatically as wanted, with no needing to human interaction through individually service’s provider.
4.2.2 Broad network access
Computing resources are accessible over the network and get into through standard mechanisms that help use via various thin or thick client platforms like mobile phones, laptops, or PDAs.
4.2.3 Resource pooling
The computing resources providers are combined to help several consumers using a multitenant model, by diverse of physical and virtual resources animatedly allocated and reallocated according to consumer demand. This happens without location dependence in that the customer usually has no control or information about the particular place of the provided resources however can be capable to specify place at an advanced level of abstraction (e.g., town, state, or datacenter). Some instances of independently allocable resources include storages, processers, memories, network bandwidth, and virtual machines.
4.2.4 Rapid elasticity
Resources can be quickly and elastically growth up or down, usually automatically, to scale out in fast way then speedily out to scale in quickly. For the consumers, the resources existing for provisioning frequently seem to be limitless plus can be bought in any number at any time.
4.2.5 Measured service
Cloud computing automatically control and improve resources usage through providing a metering resources at some level of abstraction suitable to the kind of service (e.g., storage, processing, and bandwidth). The use of resource can be monitored, controlled, and reported, if transparency for together the provider and consumer of the exploited service.
4.3 Cloud Service Models
Cloud service models are: Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS) (see Figure 4.1 hierarchy of Cloud service models). Every single cloud service model offers an abstraction level that decreases the hard work of the service consumer/customer to shape and set up/deploy systems. When talking about old-style on-premises data centers, the IT staff has to deploy, control and manage the whole thing. Whether the staff is deploying proprietary way out starting with purchasing commercial software products, plus they have to install and provide a management level of all the servers, plus software development and install the software too, make sure that the good levels of security are used, spread over patches in routine way (operating systems, firmware, applications, databases, etc.), and much stuff.
Figure 4.2 Hierarchy of cloud services models
Cloud service models be responsible for these happened in automatic way with level of abstraction, therefore cloud service consumers have to focus more and more on their business troubles and fewer time on managing infrastructure and all the stuff back there in traditional data centers .
Figure 4.2 shows the cloud stack. At the lowest is the old-style data center, which might have more or less virtualization in place however it is still have no characteristics of cloud computing.
Figure 4.2 Cloud Stack
4.3.1 Software as a Service (SaaS)
In this model, a complete application is offered to the customer, as a service on demand. A single instance of the service runs on the cloud & multiple end users are serviced. On the customer's side, there is no need for upfront investment in servers or software licenses, while for the provider, the costs are lowered, since only a single application needs to be hosted & maintained. Today SaaS is offered by companies such as Google, Salesforce, Microsoft, Zoho, etc.
The resources delivered to the consumer in this top level is to run the applications of the provider while are running on a cloud infrastructure. The access of these applications can happens from many client devices over a thin client interfaces like Web browsers (e.g., Web-based e-mail). On the other hand consumers does not manage or control the core of cloud infrastructure, such as network, servers, operating systems, storage, or even specific application capabilities, the ability exception of partial user-specific application configuration to set.
4.3.1.1 Characterization
• Applications are supplied by the service provider.
• The user does not manage or control the underlying cloud infrastructure or individual application capabilities.
• Services offered include:
• Enterprise services such as: workflow management, group-ware and collaborative, supply chain, communications, digital signature, customer relationship management (CRM), desktop software, financial management, geo-spatial, and search.
• Web 2.0 applications such as: metadata management, social networking, blogs, wiki services, and portal services.
• Not suitable for real-time applications or those where data is not allowed to be hosted externally.
• Examples: Gmail, Google search engine.
4.3.2 Platform as a Service (PaaS)
4.3.2.1 Overview
The second level on the stack is PaaS. IaaS is to infrastructure, PaaS is to the applications. PaaS stands on the upper of IaaS and abstracts a lot of the standard application stack level functions also offers the above functions as a service. For instance, software developers designing high scaling systems over and over have to write a huge quantity of codes to handle caching, asynchronous messaging, database scaling, and so on. PaaS provide a solution to problems using capabilities as a service therefore the developers can focus on their business instead of coding for underlying IT plumbing.
At this point, the software layer, or development environment is encapsulated and provided as a service, so other higher levels of service can be made. The service customer has the choice to form his personal applications that run on the provider's infrastructure. For the applications to be able to manage and scale, PaaS providers provides a predefined mixture of operating systems and application servers, like LAMP platform (Linux, Apache, MySQL and PHP), Google's App Engine, Force.com, etc. are some of the popular PaaS examples.
The capabilities delivered to the service consumer in this mid-level is to runs on top of the cloud infrastructure, service consumers formed or chosen up applications developed using provider's programming languages and. Consumers does not able to manage or control the core cloud infrastructure, including network, servers, operating systems, or storage, however they had control over the deployed applications and feasibly application hosting environment configurations.
The PaaS providers are controllers for everything of that, and may even control how much computing power that service consumer can use so that the providers be able to make sure the platform scales in in the same way for everyone. Early PaaS pointers like Force.com, Google Apps Engine, and Microsoft Azure dictated both the platform stack and the underlying infrastructure to developers. Force.com dictates that developers write in Apex code and the underlying infrastructure must be on Force.com’s data center.
For developers they want to access a numerous third party PaaS solutions using APIs, can offer fail great service level agreements (SLAs), over, and reach giant gains speediness to then reduce cost because they don’t manage or maintain the equipment abstracted over the APIs.
In Google Apps Engine is necessary to developers to code in Python and on the Google data center, while Azure is required .NET technologies on Microsoft data centers. The newer PaaS vendors have formed an open PaaS environment where service consumers be able to run the PaaS platform on the infrastructure of their select and by means of various options designed for the development stack, including PHP, Ruby, Python, Node.js, and many. Today Google provision many development languages as well as Microsoft too, while in earlier they only supported single language.
Another an instances of advanced public PaaS solution Heroku and Engine Yard are to vendors will offer many stacks for developers. Another huge advantage of PaaS all these platforms integrate with various software of different third parties solutions which are over and over again denoted to as, extensions, add-ons or plugins.
The following are some examples of extensions types that can be set up in different advanced PaaS solutions:
• Database
• Logging
• Monitoring
• Security
• Caching
• Search
• Analytics
• Payments
PaaS is very powerful because developers be able to assemble a group of advanced in fast way plus help of third party solutions just through using an APIs without the need to go through a process shadowed in an operation procedure to each third party tool.
As a result, PaaS offers an environment to the consumers so that consumers be able to spend more time on the best type of tools in the marketplace as well as fewer time on managing data center's infrastructure
4.3.2.2 Definitions
NIST defines PaaS as: "The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment". [6]
The CSA describes PaaS as: "The delivery of a computing platform and solution stack as a service. PaaS offerings facilitate deployment of applications without the cost and complexity of buying and managing the underlying hardware and software and provisioning hosting capabilities". [6]
CSA also mentions that PaaS services are available entirely from the Internet. PaaS vendors manage the application platform and provide the developers with a suite of tools to expedite the development process. Developers give up a degree of flexibility with PaaS because they are constrained by the tools and the software stacks that the PaaS vendor offers. The developers also have little-to-no control over lower-level software controls like memory allocation and stack configurations (examples: number of threads, amount of cache, patch levels, etc.). [6]
4.3.2.3 Characterization
• Allows a cloud user to deploy consumer-created or acquired applications using programming languages and tools supported by the service provider.
• The user has
o Control over the deployed applications and, possibly, application hosting environment configurations,
o Does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage.
• Not particularly useful when:
o The application must be portable;
o Proprietary programming languages are used;
o The hardware and software must be customized to improve the performance of the application.
4.3.3 Infrastructure as a Service (IaaS)
4.3.3.1 Overview
IaaS provides basic storage and computing capabilities as standardized services over the network. Servers, storage systems, networking equipment, data center space etc. are pooled and made available to handle workloads. The customer would typically deploy his own software on the infrastructure.
Consumers does not manage or control the core of cloud infrastructure but had control over operating systems, storage, deployed applications, and probably partial control of select networking components (e.g., host firewalls, load balancer).
Using IaaS, a lot of the everyday jobs like a traditional data center management and maintenance whatever it was about physical infrastructure (servers, disk storage, networking, and so on) are distant away (abstracted) and accessible as a pool of services that be able to automated with code, or web based management consoles.
In this model developers still have to design and code the whole apps also administrators still necessity to install, manage, and patch third party solutions, on the other hand there is no needs to the management level of physical infrastructure. In traditional data centers persons would order a physical devices from some vendors that would transport the devices to the purchaser who at that moment had to bulk, bring together, and install the hardware devices, which used up much space inside the data center. With IaaS, using the virtualization technology of the cloud can offers infrastructure on demand and be able to be up and running in moment through an application programming interface (API) or using a web based management console. Similar to services such as electricity and water, virtual infrastructure will costs only when it is powered on and in usage, on the other hand breaks accruing costs after it is powered off.
As a result, IaaS offers virtual data center abilities therefore service consumers be able to spend more time on applications development and management as well as fewer time on managing data center's infrastructure.
There are more than a few IaaS providers (vendors) in the marketplace. But the greatest complete and commonly used IaaS cloud service vendors is Amazon Web Services (AWS). Rackspace and GoGrid are also initial creators in this term.
There is an open source project named OpenStack that offers IaaS know-hows for those consumers who need to avoid third parties responsibilities and want the full control to shape their private IaaS resources in house, which is referred to private cloud in the IT world. There are some companies that are using OpenStack IaaS as a way out to rise their business.
4.3.3.2 Definitions
NIST defines IaaS as: "The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications and possibly limited control of select networking components (e.g., host firewalls)".[6]
The Cloud Security Alliance (CSA), a standards organization for cloud security, states that IaaS: "Delivers computer infrastructure (typically a platform virtualization environment) as a service, along with raw storage and networking. Rather than purchasing servers, software, data center space, or network equipment, clients instead buy those resources as a fully outsourced service". [6]
4.3.3.3 Characterization
• The user is able to deploy and run arbitrary software, which can include operating systems and applications.
• The user does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of some networking components, e.g., host firewalls.
• Services offered by this delivery model include: server hosting, web servers, storage, computing hardware, operating systems, virtual instances, load balancing, Internet access, and bandwidth provisioning.
4.4 Cloud Deployment Models
Deploying cloud computing can differ depending on requirements, and the following four deployment models have been identified. Enterprises can choose to deploy applications on Public, Private, Hybrid or community clouds, each with specific characteristics that support the needs of the services and users of the clouds in particular ways.
Cloud Integrators can play a vital part in determining the right cloud path for each organization (Check Figure 4.1)
4.4.1 Public Cloud
Public clouds are owned and operated by third parties; they deliver superior economies of scale to customers, as the infrastructure costs are spread among a mix of users, giving each individual client an attractive low-cost, “Pay-as-you-go” model. All customers share the same infrastructure pool with limited configuration, security protections, and availability variances. This enables a consumer to develop and deploy a service in the cloud with very little financial outlay compared to the capital expenditure requirements normally associated with other deployment options.
These are managed and supported by the cloud provider. One of the advantages of a Public cloud is that they may be larger than an enterprises cloud, thus providing the ability to scale seamlessly, on demand.
4.4.2 Private Cloud
Private clouds are built exclusively for a single enterprise. They aim to address concerns on data security and offer greater control, which is typically lacking in a public cloud. The cloud infrastructure has been deployed, and is maintained and operated for a specific organization. The operation may be in-house or with a third party on the premises. There are two variations to a private cloud:
4.4.2.1 On-premise Private Cloud
On-premise private clouds, also known as internal clouds are hosted within one's own data center. This model provides a more standardized process and protection, but is limited in aspects of size and scalability. IT departments would also need to incur the capital and operational costs for the physical resources. This is best suited for applications which require complete control and configurability of the infrastructure and security.
4.4.2.2 Externally hosted Private Cloud
This type of private cloud is hosted externally with a cloud provider, where the provider facilitates an exclusive cloud environment with full guarantee of privacy. This is best suited for enterprises that don't prefer a public cloud due to sharing of physical resources.
4.4.3 Hybrid Cloud
Hybrid Clouds combine both public and private cloud models. With a Hybrid Cloud, service providers can utilize 3rd party Cloud Providers in a full or partial manner thus increasing the flexibility of computing. The Hybrid cloud environment is capable of providing on-demand, externally provisioned scale. The ability to augment a private cloud with the resources of a public cloud can be used to manage any unexpected surges in workload.
The cloud infrastructure consists of a number of clouds of any type, but the clouds have the ability through their interfaces to allow data and/or applications to be moved from one cloud to another. This can be a combination of private and public clouds that support the requirement to retain some data in an organization, and also the need to offer services in the cloud.
4.4.4 Community Cloud
The cloud infrastructure is shared among a number of organizations with similar interests and requirements. This may help limit the capital expenditure costs for its establishment as the costs are shared among the organizations. The operation may be in-house or with a third party on the premises.
Figure 4.3 Cloud deployment models