What is the cloud? Beginner's guide to cloud computing concepts
Tags: cloud, aws, beginners, codenewbie
Published: 2022-11-07 19:00:21

In the last few years, cloud computing has become the new norm for most industries around the world. Being a developing topic, there are a lot of terms surrounding cloud computing you may have never heard before.

Whether you're a manager of a cloud development team or an aspiring cloud architect, we'll walk you through all the terms and background you'll need to understand the new and exciting cloud. 

**Here's what we'll learn today:**
* [What is Cloud Computing?](#what-is)
* [Advantages and Disadvantages of Cloud Computing](#tradeoffs)
* [What are Services?](#services)
* [Public vs. Private Cloud](#private)
* [Cloud Providers](#providers)
* [What is Cloud Migration?](#migration)
* [Intermediate Terms](#intermediate)
* [Wrapping Up and Next Steps](#wrap-up) 

<a name="what-is"></a>

## What is Cloud Computing?

![Before cloud computing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ox6smvn52wbv0jsnyfm2.png)

### Before Cloud Computing

Let's start at the beginning.
 
Before cloud computing, companies had to buy their own servers to install and manage inside their buildings. This setup is known as on-premises storage.

On-premises storage has many downsides, such as high up-front cost, information being only accessible from a select area, and a high risk of loss should the server lose power.

Between companies, too, on-premises storage hurt business by making it difficult for companies to share information.

These problems seemed unavoidable, that is, until the advent of cloud computing.

### The Era of Cloud Computing

Cloud computing is a system that allows access to services like storage or development platforms on-demand via internet-connected off-site data centers.

These data centers are managed by third-party companies, referred to as cloud providers.

This system not only addresses all the problems which plagued the on-premises systems, but they're also usually cheaper, more scalable, and more convenient.

[Amazon AWS](https://www.educative.io/blog/amazon-aws-best-services?eid=5082902844932096) was the first major cloud computing service provider, being released in 2006. AWS currently has about half the cloud services market share but has now gained notable opposition in Microsoft with Azure and Google with the Google Cloud. 

> **Where is cloud storage?**
>[Cloud storage](https://www.educative.io/answers/what-is-cloud-storage?eid=5082902844932096) sounds like it's just floating somewhere when really, it's very similar to traditional hardware storage.
>
> Saving something to the cloud sends it to be stored in a local data center operated by the cloud host business (Google, Amazon, etc.). These data centers are, in fact, very similar to old-fashioned corporate server rooms, but instead of each company having to fund and operate their own server room, now they can outsource their storage to these centralized cloud data centers.
>
> Each cloud storage provider has hundreds of these data centers all across the planet, ensuring you can access your work from anywhere, on any device.

<a name="tradeoffs"></a>

## Advantages and Disadvantages of Cloud Computing

While solving all the problems of on-premises-based systems, cloud computing has its own share of disadvantages.

Let's break down the advantages and disadvantages of cloud computing when considering migration to the cloud.

### Advantages of Cloud Computing:

**Democratizes access to technology**

Companies, both small and large, can access similar high-tech services. By switching from high up-front hardware to dynamically priced and well-established data centers, it's easier than ever for even fresh companies to have the best tools.

**Focus on product, not infrastructure** 

Businesses can increase efficiency and reduce costs by focusing on what they do best, making their product, and leaving the computing administration to the provider. 

**Easier maintenance**

Thanks to the centralized data centers, updates and maintenance can be distributed company-wide in just a single click.

**Versatility** 

Hosting computer resources on the cloud breaks dependency on the office, allowing developers to work from home or any location with a solid Internet connection.

**Reliable** 

Cloud providers have the scale to invest in advanced security measures and backups on-premises systems couldn't achieve. Also, by virtue of being off-site, a company's data is safe, even in the case of a power outage or other system failure.

### Disadvantages of Cloud Computing:

**Network Dependent**

If all of your company's files and applications are stored on the cloud, you simply cannot work without an internet connection.

If a service outage occurs, employees can be stuck and unable to work, costing thousands in production loss.

**Loss of Control**

Regardless of the chosen service type, all cloud systems involve giving up some control of data or storage. While this reduces the load on the client company, it can be a stressful switch to no longer have full control. This requires a trust that the cloud provider will protect your data and production with the same care that you would in house.

**Less Control over Maintenance**

Especially with PaaS and SaaS, clients have nearly no ability to speed along or perform maintenance on their end. This means if there is a problem with a cloud service the only thing to do is call the cloud provider's support team.

These support teams have gracious open periods but they're not 24-hour, meaning sometimes you may not be able to get your problem solved until the following morning. Their aid is excellent, however for some leaders that disconnect is too great to be convenient.

**More Appealing Hack Targets**
Data centers are appealing targets for hacking attacks because of the sheer amount of data they contain. For smaller cloud clients, lumping their data together increases the number of attacks that would target their data than if it was stored in a less appealing on-premises system.

It's a constant battle for cloud cyber-security developers to hold off breach attempts, and inevitably one will eventually get through. 

<a name="services"></a>

## What are services in Cloud Computing?

![Cloud services](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjr17ckgzj9pubwigik6.png)

Services can be thought of as individual cloud capabilities provided to companies. For example, cloud storage would be a separate service from application hosting.

These services are often bundled into packages of three types depending on how the cloud is used in a given business, with IaaS clients relying on the cloud less than SaaS clients. 

Let's look at what defines each and some examples you may be familiar with.

>Each service builds onto each other as we go down, SaaS includes all the features of PaaS and so on.

### Infrastructure as a Service (IaaS)

This is the least dependent of the cloud service types, meaning many capabilities (data, applications, runtime, O/S) are still handled internally. 

In this category, the company rents VMs, storage, network, and operating systems from the cloud provider on a pay-as-you-go basis.

This saves the business from having invest in expensive on-premises hardware and leaves room for the company to grow via the flexible payment style. 

**Examples:** 
* Amazon EC2 and S3
* Google Compute Engine
* Windows Azure.

### Platform as a Service (PaaS)

This is the mid-point between control and ease which provides all middleware and environments to use when developing and running applications.

These standardized environments help developers craft their applications to work seamlessly with web servers, database management systems, and software development kits for top programming languages.

**Examples:**
* AWS Elastic Beanstalk
* Heroku
* Windows 
* Azure
* Force
* Google App Engine

### Software as a Service (SaaS)

This service type leans most heavily towards ease of all three, with most computerized functions being handled off-site. 

PaaS allows businesses to host and run their applications on cloud data centers rather than private servers. In doing so, users can access applications through the internet in real-time without needing to download and install the app locally. It also includes security, dev support, and maintenance handled by the cloud provider as part of the cost.

This service allows developers to create responsive applications for use on-demand on any device.

**Examples:** 
* Dropbox
* Google Apps
* Microsoft Office 365
* Gmail
* Yahoo
* Facebook

<a name="private"></a>

## Public vs. Private Cloud

Up until now, we've only discussed **public cloud** in which data centers can contain data for hundreds of different users or clients. These clients only need to pay for the storage they use, rather than paying for the ability to use the data center. 

The majority of cloud use is done on public cloud services.

* **Pros:** fits the needs of most organizations and lower upfront costs
* **Cons:** can be less-cost effective for large companies, target for hackers, more users means more avenues to a breach

Companies can also pay to reserve a data center so that it is used only by that company, called a **Private Cloud**. This is often used by companies which store sensitive data such as banks or hospitals as they're more secure.

* **Pros:** more control over data, lower security risk, adaptable to needs and size
* **Cons:** Expensive up-front costs

<a name="providers"></a>

## Cloud Service Providers

While Amazon is the most well-known, the cloud computing market is still developing. Many tech companies have created their own cloud software with different strengths and specialties.

Let's look at which software is good for each job.

**The Big Three of Public Cloud:**
* AWS
* Microsoft Azure
* Google Cloud

**Infrastructure-as-a-Service:**
* AWS
* Microsoft Azure
* Google Cloud

**Multi-Cloud Hybrid Deployments:**
* IBM
* Dell
* HP
* VMWare

**Software-as-a-Service:**
* Salesforce
* Adobe
* Workday
* Oracle 

<a name="migration"></a>

## What is Cloud Migration? 

Cloud migration is the process of moving a company's data, applications, and business infrastructure into a cloud environment. This migration is notoriously tricky, and many companies don't migrate simply because of the work. But the overall benefits far outweigh the challenges. 

### Types of Cloud Migration

There are many kinds of cloud migration that a company can consider based on their factors, such as cost, security, and performance. The most common is to transfer on-premises data centers to a public cloud.

Another avenue is moving data to a new vendor or private cloud, called **cloud-to-cloud migration**. 

Cloud migration requires you to evaluate your requirements, select a vendor, calculate all costs, and reorganize the company. 

### Crafting a Migration Strategy

Migrating to the cloud requires strategy because of the scale of the change. 

There are some common things considered when crafting a cloud migration strategy:

* What current technologies and infrastructure does the company have? Will they be able to reuse any of it?
* What type of services does the company need? Would IaaS, PaaS, or SaaS be best?
* How does the company/team want to scale or grow?
* Will anyone's jobs be changing now that we are migrating? 

<a name="intermediate"></a>

## Intermediate Cloud Computing Terms

Now that we've learned some basic terms and concepts, lets take a look at a few of the more intermediate words that are a staple of many in-office discussions.

### Workloads

A workload is a business process, like accounting, paying the company’s bills, or marketing releasing a branding update. Workloads are how developers think about business requirements, a phrase you might hear is **migrating workloads to the cloud.**
 
Migrating workloads to the cloud means moving all the required pieces of a business process to cloud computing services.

### Cloud-Native 

Cloud-native means using cloud tools to develop software from the beginning of the development cycle.
Cloud-native development is grounded in containers, microservices, and dynamic orchestration. These applications are a collection of independent, loosely coupled services, and they are optimized for continuous integration and continuous deployment (CI/CD). 

Cloud-native is very powerful because they are much easier to make and far more integrated than the traditional development model. Cloud-native development gives access to many developer tools. For example, some tools make it easier to use open-source software packages or deploy a web application.  

### Containers

A [container](https://www.educative.io/edpresso/intro-to-docker---containers-images-and-the-dockerfile?eid=5082902844932096) is a standardized unit of software. Containers package code and dependencies into a lightweight, standalone executable that contains everything required to run the application, regardless of the infrastructure. These allow developers to deploy applications in multiple clouds without worrying about the cloud service provider. 

<a name="wrap-up"></a>

## Wrapping up

You've just completed your first step into the ever-changing world of cloud computing. You've built a strong foundation which will allow you to not only speak confidently about the cloud but also to jump hands-on into cloud programming.

## Next Steps

For aspiring cloud developers, your next step is to move to learning intermediate cloud architecture like:
* Microservices Deployment
* Block Storage
* Cloud Instances
* Autoscaling
* Container Orchestration

To help you take that step, Educative has teamed up with veteran full-stack developer Shivang Sarawagi to create an interactive, comprehensive course, [**Cloud Computing 101: Master the Fundamentals**](https://www.educative.io/courses/cloud-computing-101-master-the-fundamentals?eid=5082902844932096), sure to accelerate your cloud learning. 

Once you've learned these fundamentals, you can learning a cloud platform of your choice, be it [AWS](https://www.educative.io/blog/amazon-aws-best-services?eid=5082902844932096), [Azure](https://www.educative.io/blog/how-to-deploy-your-machine-learning-model?eid=5082902844932096), or Google Cloud Platform.

With these resources in hand, you're well on your way to that dream cloud development position.

*Happy learning!*

### Continue learning about cloud computing on Educative
* [What is cloud-native? What to know for your interview](https://www.educative.io/blog/cloud-native-interview?eid=5082902844932096)
* [Cracking the AWS certification exams: How to prepare](https://www.educative.io/blog/crack-aws-certification-exam?eid=5082902844932096)
* [5 AWS courses to help take your skills to the next level](https://www.educative.io/blog/top-five-aws-courses?eid=5082902844932096)

### Start a discussion 
What is your favorite benefit of cloud computing? Was this article helpful? Let us know in the comments below!