Introduction to cloud computing
Published: 2021-09-15 18:37:47

# Why cloud computing:

Before understanding what cloud computing is, Let's understand why cloud computing was needed and what are all the problems we had that cloud computing solved.


Before cloud computing, the business should buy a stack of servers for their use. They have to allot some space to place their servers. And then they have to hire people to monitor and maintain the servers. As the traffic increases, they have to buy more servers and hire more people to maintain the servers.

Now, let's consider an e-commerce website. The business realizes that it would need 1000 more servers for the new year sale. It could go ahead and buy 1000 more servers and hire more people to maintain those servers. But most probably the traffic won't be that high after new year sales, which means some servers have to stay idle most of the times. So they end up paying a lot more than they use.

The business needs someone who can provide 1000 servers whenever needed and take those servers away whenever not needed. Cloud exactly provides this.

Cloud is a solution with dynamic way to scale up and scale down the services as required. Cloud signifies abstraction. It is built of many data centers. The user need not worry about maintenance or security, the cloud provider will take care of it. When you use cloud computing, you don't have to buy any servers, you can just rent servers for a time period. Hence, there is no principal expenditure. The users gain access to advanced features. Users can rent only the services they need. Cloud computing follows "pay as you use" model, you have to pay only for the services that you use.

Now, the e-commerce business can rent 1000 more servers for a time period of three weeks. Pay as you use model and scalability makes cloud computing cost effective and agile.

# What is cloud computing

Cloud computing is the on-demand availability of computer system resources, especially data storage (cloud storage) and computing power, without direct active management by the user. Large clouds often have functions distributed over multiple locations, each location being a data center. Cloud computing relies on sharing of resources to achieve coherence and economies of scale. Cloud providers typically use a pay as you use model, which can help in reducing capital expenses but may also lead to unexpected operating expenses for unaware users.

# History of cloud computing

Before cloud computing, there was client-server computing, which is a centralized storage in which all the data, applications and controls are stored in the server side. If a user wants to access a specific data or a software, the user needs to connect to the server.

After this, distributed computing was introduced, in which computers are networked together and share the resources when needed. Cloud computing is based on the concept of distributed computing.

In 1961, John MacCharty proposed the concept of utility computing. Utility computing suggests that computing can be sold like a utility, just like water or electricity.

The launch of world wide web in the early 1990s had a huge impact on cloud computing. Millions of computers were connected to the internet which led to the dot com revolution and e-commerce gaining popularity. As a result, businesses like salesforce.com were born. Salesforce was the first company to offer application as a service over internet, Salesforce pioneered the concept of delivering enterprise app through a simple app.

Three years later, in 2002 Amazon launch Amazon Web services (AWS), it provided services like storage, computation and even human intelligence. Few years later in 2006, Amazon introduced new services like Amazon simple storage service (Amazon S3), Amazon elastic compute cloud (Amazon EC2). These services helped companies and individuals to rent virtual computers and run their own programs and applications on the virtual computer(s) through internet. Later that year, Google launched Google docs services.

In 2009, Google apps started to provide cloud computing services to enterprise applications. Microsoft entered the world of cloud by launching Microsoft Azure.

Now, the end users are familiar with the concept of cloud. They happily store their data in remote storage location provided by a cloud storage service provider.

# What is a cloud service?

The term "cloud services" refers to a wide range of services delivered on demand to companies and customers over the internet. These services are designed to provide easy, affordable access to applications and resources, without the need for internal infrastructure or hardware. From checking email to collaborating on documents, most employees use cloud services throughout the workday, whether they’re aware of it or not.

The aim is to fullfil an customer's needs. A customer might have 10 needs, the aim of a cloud service provider is to meet all 10 needs. The service provider can carry out either customized approach or packaged approach to fullfil the customer's needs.

# How do cloud services work?

Cloud services are fully managed by cloud computing vendors and service providers. They are made available to customers from the providers' servers, so there's no need for a company to host the applications on its own on-premises servers.

# Types of cloud service models:

Cloud services can be broadly classified into three types of service models:

1. SaaS
2. IaaS
3. PaaS

##SaaS

SaaS stands for software as a service. It is the most common use case of the cloud services. SaaS allows users to connect to and use cloud based applications over the internet. The software actually runs at the cloud service provider's data center on their physical servers. Even the data captures is stored in the service provider's data center. Everything is managed for us by the cloud service provider, we simply access the software over the internet. 

Consider Gmail, the user is only concerned about using the application properly. The user need not worry about things like how the message gets delivered, what if the server goes down, what are the security concerns, what's happening in the background. Gmail is a good example of Saas.

Eg: office 365, Netflix, Amazon prime, Dropbox, Google drive.

###Advantages:

* Easy to get started
* Accessibility
* Automatic updates
* Flexible usage based pricing
* Reduced financial risk
* Affordable
* No maintenance cost as it does not require any additional hardware or software versions.
* Scalability

###Disadvantages:

* Insufficient data security
* Troublesome software integration
* Once an enterprise becomes dependent on a SaaS application, it will be difficult to switch from one vendor to another.

## PaaS

PaaS stands for platform as a service. PaaS is a programming platform for developers. This platform is generated for the programmers to create, test, run and manage the applications.
A developer can easily write the application and deploy it directly into PaaS layer.
PaaS gives the runtime environment for application development and deployment tools.
Server and virtual machines are provided and maintained by the cloud service provider. No need to handle backups as its also handled by the cloud service provider.

eg:Google Apps Engine(GAE), Windows Azure, SalesForce.com, Amazon Web Services(AWS), IBM Blue mix

Advantages:
* simplified development

* lower price

* Integrates with web services and databases.

* Accessible to various users via the same development application.

* Instant community support

* Builds on virtualization technology, so resources can easily be scaled up or down as per the organization's need.

* Developer only requires a PC and an Internet connection to start building applications.
 
###Disadvantages: 

* Security risks

* Developer can write the applications as per the platform provided by PaaS vendor hence the moving the application to another PaaS vendor is a problem.

## IaaS

IaaS stands for infrastructure as a service. In IaaS, you buy complete resources rather than purchasing server, software, network equipments individually. The customers can access these resources through cloud computing service provider platform. The customer need not worry about the principal expenditure of setting up the servers or maintenance, as they are taken care of by the cloud service provider.

Eg: digital ocean,  Cisco meta cloud, linode, Google Compute Engine (GCE)

### Advantages:

* The customer doesn't have to worry about principal expenditure or maintenance cost.

* Enhanced scalability

* Support for dynamic workload

* Users can choose a CPU, memory storage according to their needs

* Automated administrative tasks

* Flexible

### Disadvantages:

* Limited customisation

* Security risks: IaaS providers secure the infrastructure, but businesses are responsible for anything they host.

* Technical issues: downtime is one of the most common technical issues faced while using IaaS solution.

* Changing vendors can be difficult

# Cloud deployment model:

A cloud deployment model is a specific configuration of environment parameters such as the accessibility and proprietorship of the deployment infrastructure and storage size. This means that deployment types vary depending on who controls the infrastructure and where it’s located. Broadly, it can be classified into 4 types:
1. Public cloud
2. Private cloud
3. Community cloud and
4. Hybrid cloud

## Public cloud

A public cloud is available for use, for anyone. If an individual subscribes to a public cloud service, the cloud service will provide services to that individual. It allows the system and services to be easily available to the general public.

### Advantages: 

1.Low cost
2.Higly scalable
3.Flexible
4.No hardware setup
5.No infrastructure management

### Disadvantages:

1. Reliability issues
2. Data security and privacy concerns

## Private cloud:

Unlike public clouds, a private clouds are owned by a single company. Hence, it is also known as internal model or. Corporate model.

The server can be hosted on the premises of the owner company or externally. Either way, the servers are to be maintained by the owner company.

### Advantages:

1. Highly private 
2. Secure
3. Control oriented
4. Private model can support legacy systems that cannot access the public clouds

### Disadvantages:
1. High capital expenditure.
2. Fixed scalability
3. High maintenance cost.

## Community cloud:

In community cloud model, only one company owns and maintains the cloud servers. But the cloud infrastructure is shared among different organizations with similar background. Access to a community cloud environment is typically restricted to the members of the community.  An example of such a community is where organizations/firms are there, along with the financial institutions/banks. A multi-tenant setup developed using cloud among different organizations that belong to a particular community or group having similar computing concerns.

### Advantages:

1. Cost reduction
2. Collaboration
3. Security and reliability
4. Ease of data sharing

#### Disadvantages:

1. Increased maintenance cost
2. Remote access may be limited
3. Have to hire more IT staffs

## Hybrid cloud model:

As the name suggests, hybrid cloud model is a combination of two of more cloud models combined as one architecture. Hybrid model will have the advantages of all the models involved in it.

### Advantages:

1. Flexible
2. Can be customized for a company's need.
3. Unique balance of control and performance
4. Quick deployment
5. Scalability
6. Low cost

### Disadvantages: 

1. Compatibility
2. Security
3. Networking bottlenecks
4. Maintaining visibility over a hybrid cloud service is complicated

## Features of cloud computing:

Let's look at the most important features of cloud computing.

### On demand self service:

This is a fundamental characteristic of cloud computing. The cloud computing services does not require much human interaction from the service provider. The user can provision, monitor and manage the resources as needed. 

### Resources pooling:

The cloud service provider can share the computing resources (like storage,network,server) among the users as per the individual's needs. In other words, the cloud service provider's resources are pooled to multiple customers using a multi-tenant model.

### Scalability and rapid elasticity: 

Resources can be elastically provisioned and released to meet immediate requirements. And the resources can be scaled in and scaled out as needed. This enables cost effective running of workloads that require large number of servers but only for a short period of time.

### Economical:

The user has to pay only for the services used. There are no hidden charges.

### Measured services:

The resource consumption is measured and reported for each service. This gives transparency to both the service provider and the consumer. This helps the user understand the effective use of resource.

### Security:

Security is one of the most important features of cloud computing. The cloud service provider creates a copy of the data, so that even if the data gets lost by any chance, the copy version can be restored.

### Broad network access:

Cloud computing services are generally accessible from anywhere over the internet. And incase of private clouds, services can be accessed from anywhere within the enterprise. The services can be accessed on a variety of platforms.


### Maintenance:

The servers are maintained by the cloud service provider. The downtime is generally very low and in some cases, there is no downtime at all.

# Challenges

## Lack of expertise

With the increasing workload on cloud technologies and continuously improving cloud tools, the management has become difficult. There has been a consistent demand for a trained workforce who can deal with cloud computing tools and services. Hence, firms need to train their IT staff to minimize this challenge.  

## Cloud Cost Management: 

Cloud computing enables you to access application software over a fast internet connection and lets you save on investing in costly computer hardware, software, management and maintenance. This makes it affordable. But what is challenging and expensive is tuning the organization’s needs on the third-party platform. 

Another costly affair is the cost of transferring data to a public cloud, especially for a small business or project.

## Cloud Migration:

It is easier to migrate a new application from one cloud service provider to another. Once application becomes dependent on a cloud service provider, it will be fairly difficult to move to a new cloud service provider.

## Compliance:

Compliance means a set of rules about what data is allowed to be moved and what should be kept in-house. The organizations must follow and respect the compliance rules set by various government bodies. Whenever an organization transfers data from its internal storage to the cloud, it experiences compliance with the laws and regulations of the industry.

## performance

When your business applications move to a cloud or a third party vendor, your business performance starts to depend on your provider as well. Another major problem in cloud computing is investing in the right cloud service provider.

## internet connectivity

The cloud services are dependent on a high-speed internet connection. So the businesses that are relatively small and face connectivity issues should ideally first invest in a good internet connection so that no downtime happens. It is because internet downtime might incur vast business losses.