Introduction to Cloud Computing

What is Cloud Computing?

This lecture will introduce you to the world of cloud computing. We will begin by defining cloud computing, and discussing the pros and cons of several different models.

We will explain virtualization (the magic that makes cloud computing possible) what hypervisors are, and how virtual machines fit into them. You will learn about some of the advantages of virtualization and snapshots.

Next, we will discuss the advantages of moving to the cloud for your computing needs. We will cover the ways you and your company can cut costs by moving to the cloud with either private or public cloud computing.

Finally, we will explain the three different service models:
- SaaS: Software as a Service
- PaaS: Platform as a Service
- IaaS: Infrastructure as a Service


What is cloud computing? Cloud computing can be thought of as a network computing approach, where an application runs on a server or a group of servers owned by a provider, rather than on your own computer. This provider rents you out computational resources, storage, bandwidth and the power to run the servers according to your own needs. Being on the cloud adds a number of technical and technological advantages that are making the cloud industry grow incredibly faster nowadays. Cloud usually grants a decrease in total costs, allows virtually unlimited scalability of your infrastructure, and much more. There are many different models of cloud computing, and many different approaches to deploy your application on the cloud, each with it's own pros and cons. We'll see them in detail later.

Virtualization: a Cloud Computing enabler

First we need to talk a little about the black magic that makes cloud computing possible, virtualization. Virtualization is way older than cloud computing, and is another rather complex topic we'll delve into fully in a separate course. Briefly, virtualization is a technique to allow your operating system and your software to believe they're running on standard, ordinary hardware while in reality they're running on top of another kind of software known as the hypervisor, which simulates a real computer. You create a hypervisor on your server and then create a number of so-called virtual machines inside of it.

Each virtual machine can be seen as a completely new and independent server, and a completely insulated environment without any possibility of contamination among the virtual machines. A provision with virtual network interfaces to communicate with each other, and the internet.

Virtualization has an incredible number of advantages. For example, you can provision new virtual machines, that is new servers, in a matter of seconds, and you can even duplicate existing ones on different hardware far away from your server room.

You can create snapshots to roll back an existing configuration if something goes wrong, you can isolate applications to avoid cross-contamination, you can shut down broken software without affecting the rest of your infrastructure. Virtual machines can take advantage of the underlying hardware in a much more efficient way. Virtualization is the foundation and cornerstone of cloud computing. Cloud simply isn't possible without this technology. Thanks to all of the amazing features virtualization can exploit, a cloud provider can create, provision and de-provision computer power and storage without any need to change the hardware setup. Instead they just create more virtual machines or enhance the existing ones. In fact, you can do all this on your own from your provider's control panel or even in a completely automated way, minimizing user involvement, reducing costs and the possibility of human errors. Now, you might be wondering why you should consider a cloud approach rather than the good old way of doing computing. Well there are an incredible number of advantages granted by going on the cloud. Let's take a look at some of them.

Cloud Computing: Pay-as-you-go model

First of all, costs are a major reason to choose cloud. One of the most interesting aspects of cloud computing is that the resources your provider lends to you are managed using a pay-as-you-go approach.

That is, you only pay for the resources you choose to use. Another important advantage of cloud computing, made possible by the virtualization approach we've already seen, is that you can provision more computing resources and storage at a glance when you need them.

This is frequently known as elastic capability, after the name of Amazon Web Services, probably the first and most important cloud provider around. For public cloud deployment models, you can forget about stuff like administrating your servers, hardening your application, networking and the like. We'll dedicate two lectures to the economical and technical advantages of cloud computing.

So what are the deployment models we were just talking about? Well there are at least two different ways of getting on the cloud.

Private cloud computing vs public cloud computing

So far we've learned that cloud computing resources are provisioned to you by a provider from their data center. That's true, but there's more to it. It's possible to create a cloud-like environment even within your own data center, in the so-called private clouds. A private cloud is a cloud infrastructure created and operated by a single organization.

Although some might think that private clouds are not really cloud in the same sense, several companies run their own private clouds to get all the advantages while maintaining full control over their infrastructure. On the other hand, public cloud is what we've talked about so far, and is the most common model of doing cloud computing. Providers like Amazon, Google and Microsoft are the most important players in the field, and their solutions are widely used and appreciated.

If you're new to cloud computing, chances are you'll become acquainted with this world utilizing resources from one of these three giants.

Cloud Computing models: SaaS, PaaS, IaaS

Whatever the deployment model is, cloud applications can be run according to three different service models, under the well known acronyms SaaS, PaaS, and IaaS.

Generally speaking, they refer to approaches that progressively save you the burden of low level administration at the price of reduced flexibility. Let's introduce them shortly before going into further details in another lecture. The top level cloud computing model is SaaS.

Have you ever used Gmail, Salesforce, Basecamp, Hootsuite or one of the other countless software solutions like these? They're all SAAS, that is Software As A Service. You get a complete software package ready to use, on-demand at a monthly or yearly fee. However, you can't customize it more than the provider allows. The second level is PAAS. Services like Cloud Foundry or Google App Engine are two common examples of PAAS, which is Platform As A Service. With a PAAS you can deploy your own application and take care of it while your provider will manage all the underlying infrastructural aspects.

PAAS is an intermediate level between SaaS, which we just saw, and IaaS. IaaS, or Infrastructure As A Service, is the most basic service model. In this scenario you have full control over your infrastructure and you are provided with resources such as power supply, network connection, load balancers, firewalls, IP addresses, block or object storage and so on. It's your job to build everything on top of that. So after this very broad and general overview, it's time to begin our journey in cloud computing. In the next video we'll see a very short history of cloud computing, when and how it was born, and how it evolved over time.

About the Author
Andrea Colangelo
Debian Developer

Software Engineer with a solid focus on QA and an extensive experience in ICT. Above all, Andrea has a very strong interest in Free and Open Source Software, and he is a Debian Developer and an Ubuntu Developer since years. Non-tech interests include: Rugby, Jazz music and Cooking.

Covered Topics