Cloud Computing, often referred to as simply “the cloud”, is a distributed architecture that centralizes server resources on a scalable platform, enabling ubiquitous access to configurable resources and services. It provides storage and access for data over the internet instead of our computer’s hard drive. Leveraging the Internet, it provides unparalleled and distributed services based on virtualization and service-oriented architecture. Cloud is not another recent technology, but rather it can be described as a delivery model for information services using existing technologies. It does an excellent job of reducing the time spent on IT infrastructure and maintenance. Cloud presents itself as a ubiquitous, dynamically scalable, and on-demand model, that can be purchased on a ‘pay-as-you-go’ basis without any prior subscription or under/overprovisioning.
Cloud Computing Models
1. Service-Based Models
There are three delivery models that the cloud utilizes to provide different types of services are delivered to the end-user. All the services offered by clouds fall under one of the following three categories. They are SaaS, PaaS, and IaaS which provide software, application platform, and infrastructure resources as services to the consumer. These models also place a different level of security required in the cloud environment. Among all the three services, IaaS is considered as the foundation of all cloud services, with PaaS and SaaS built upon it. With this, several tremendous capabilities are inherited.
- Software as a Service (SaaS) is an excellent software deployment model where apps are hosted remotely, by the application or service provider, thus providing the capability to the service subscribers to access the provider’s applications running on a cloud infrastructure. Here, the service providers control the entire application and the Customer just pays to use it through a web API This model offers the customers significant benefits, such as enhanced operational efficiency and reduced costs. SaaS has emerged rapidly as the dominant delivery model for meeting the requirements of various IT enterprise services. Though the success of SaaS seems to be incredible, many enterprises are still not sure about this model due to a lack of clarity in the way their data is secured. However, to ensure that their customers are fearless about application security, vendors must address these issues from time to time.
- Platform as a Service (PaaS) is another model that is just above IaaS in the stack and it abstracts everything up to OS, middleware, etc. PaaS offers an integrated development environment (with a set of tools) that a developer can cherish to build their applications without having to worry about what is going on underneath the service, and still has control over his/her application. Here the service offered is a complete software development lifecycle management, from planning to design to developing applications to deployment to testing to maintenance. Everything else that runs in the background is abstracted away from the “view” of the developers. Google’s App Engine, a service that allows developers to build programs on Google’s infrastructure, is a perfect example of PaaS. The dark side of PaaS is that these advantages themselves can be helpful for a hacker to leverage the PaaS cloud infrastructure.
- Infrastructure as a Service (IaaS), cuts down the efforts put by developers in deploying applications. Here, a virtual machine is offered as a service and this machine can hold anything that the developer wants it holds. This way, instead of spending huge amounts on own data centers or managing customized hosting services and then hiring operations staff to get it going, one can focus on building a beautiful application, get a virtual server running in minutes and pay only for the resources used. In short, IaaS has enabled numerous organizations to focus on their core competencies without worrying much about the setup and management of the infrastructure. The best part of the service is that it allows the consumers to automatically grow or shrink the number of virtual machines running at any given time to accommodate the changes in their requirements and demands. Although the cloud has a compelling value proposition in terms of cost, the security provided for the applications still does not seem to be in a great state.
2. Location-Based Models
Apart from the services offered, cloud computing can also be described based on the location of the cloud. Any deployment model would fall under one of the following four categories.
- Public Cloud, is defined as a type of hosting, where services are delivered over a network for public use. These clouds are great for organizations that require the management of hosts and various applications that users use. Here, customers are not aware of the location of the infrastructure and have zero physical control over it. Whereas, the cost is usually shared among all the users or is in the form of a pay per user policy. Since public clouds use shared resources, they do excel mostly in the performance metric but are also most vulnerable to numerous attacks.
- Private Cloud, refers to the cloud infrastructure that is solely utilized by a single organization and is not shared with others. It can be hosted either internally or externally, thus giving organizations a good amount of control over security and data which is safeguarded by a security system. This model is apt for organizations that have a huge demand for management, security, and uptime requirements. Although the security and control level is highest while using a private network, the cost reduction can still be minimal, if the organization requires to invest in an on-premise cloud infrastructure.
- Hybrid Cloud, of course, refers to the use of both private and public clouds, depending on their purpose. This model is tremendous when scalability, flexibility, and security are taken into consideration. Resources here, are managed and can be provided either internally or through the help of external providers. An example of a hybrid cloud can be seen in action when an organization uses a public cloud to interact with their customers but also keeping their data secured through a private cloud. Though the model uses both public and private clouds, they can remain separate entities, thus adding to the beauty of the model.
- Community Cloud, which refers to an infrastructure that is mutually shared between multiple organizations that belong to a single community cloud at banks, government in a country, or trading firms are some of the best examples for community cloud model implementation. Here, the factors like privacy, performance, and security are usually shared by the community members. The model is managed and hosted either internally or through the help of a third-party provider, thus making it apt for organizations that work on joint ventures that need centralized cloud computing ability for managing, building, and executing their projects.
Cloud Computing Architecture
A Cloud computing system is composed of two sides. These two sides are known as the Front End and the Back End, and they are connected to each other usually through the internet. Here, the front end represents the user side and the back end acts as the “cloud” section of the system. The client’s computer, along with the application required to access the cloud computing system forms the front end. This end is an interface that is visible to all computer users or clients through their web-enabled client devices. But there is no rule, that all cloud computing systems would use the same user interface. Whereas the back end of the system is where, various computers, servers, and data storage systems that create the “cloud” of computing services reside. Also, there exists a central server that takes care of system administration, traffic monitoring, and client demands to ensure everything is running in an efficient and smooth manner. Apart from this, it adheres to a set of rules called protocol and makes use of Cloud middleware.
The middleware software of the cloud, also known as the cloud OS, does a tremendous job in managing and controlling numerous services. Amazon EC2 – Elastic Cloud Compute forms the best example for Clouds middleware. The operating system on a bare metal server, also known as a hypervisor, utilizes various well-defined protocols, thus allowing multiple guest virtual machines to run concurrently. It the hypervisor that guides the communication between its containers and the connected world. Hypervisors use the server virtualization methodology that bypasses some of the physical limitations which stand-alone servers can face. Through the concept of virtualization, a physical server can be tricked into thinking, that it is also a part of a multiple server environment. With the increase in the number of services hosted by a cloud computing provider, the demands of increasing traffic and compute loads must be anticipated and accommodated. To maintain and protect the client’s data efficiently, a cloud architecture must have greater redundancy for locally hosted systems. Through the copies generated by this redundancy, the central server can jump in and access backup images to quickly retrieve and restore the required data.
When a simplified vision of cloud computing architecture, is considered, then the following steps take place in the background: First, A service request is sent by the client, which then is taken as an input to find the appropriate resources. Once all the appropriate computing resources are found then the client request gets executed and the results for the service are sent back to the clients.
Cloud Computing Characteristics
- Broad network access: Capabilities of the cloud are available all over the network and are accessed through standard mechanisms by numerous heterogeneous thin and thick client platforms such as mobile phones, laptops, and PDAs. Cloud computing provides the ability to massively scale bandwidth and storage space.
- On-demand services: Email, applications, network, or server service are some of the services that are provided without requiring human interaction with each service provider. Amazon (AWS), Microsoft, Google, IBM and Salesforce.com, and NASDAQ are some of the major cloud services, providing on-demand services.
- Resource pooling: Computing resources are pooled together using a multiple-tenant model, to serve multiple consumers with various physical and virtual resources dynamically assigned and reassigned with respect to consumer demands. These resources include processing, storage, memory, virtual machines, and network bandwidth. The pooling together of the resource builds economies of scale.
- Measured service: Often, the usage of cloud computing resources can be measured, controlled, and reported, thus providing transparency for both, provider, and consumer who has utilized the service. There also exists a metering capability that enables to control and optimize the utilization of resources. This characteristic is visible in utility companies that sell power to subscribers, and telephone companies that sell voice and data services, IT services, data center hosting, etc. At the end of the day, you pay for what you have utilized. The more you use, the higher you pay.
- Rapid elasticity: Cloud services are elastically provisioned to provide quick scale-out and are rapidly released to provide quick scale-in. Using this, users can dynamically increase or decrease their capabilities as required. Scaling up and down a tenant’s resources provides a good opportunity for other tenants in utilizing the previously assigned resources of tenants. To the consumer, these provisioning capabilities often seem to be unlimited and can be bought in any amount, at any time.
- Multi Tenacity: Cloud is based on a model, where resources are shared at the network level, host level, and application level. Multi-tenancy, as the term implies, refers to dealing with multiple tenants of the cloud living and sharing with other tenants the provider’s infrastructures, including computational resources, storage, services, and applications. Using multitenancy, clouds provide simultaneous and secure hosting of services for various customers utilizing a single set of cloud infrastructure resources. This unique feature of resource sharing in clouds, allows cloud providers to control the utilization of resources more efficiently by partitioning a virtualized infrastructure among multiple customers.