Cloud Computing

Central part of my course this year seeing as every large project in industry uses cloud resources in one way or another. This course seems to be largely focussed on Google Cloud.

Source:
Marinescu Dan C. Cloud Computing : Theory and Practice


Intro to Cloud Computing

Contents:

  1. Why It Exists
  2. Delivery Models
  3. Cloud Vulnerabilities and Disadvantages
  4. Parallel Computing and Distributed Systems

Why it exists

At home we usually have limited computing resources. When we're not using these resources, they're either sat idle or turned off. If we want to develop systems or software, we need more resources in order for our systems to be constantly available or have the necessary power.

Cloud computing fixes this. It involves using shared hardware and software resources (falling into categories: computing, storage and networks) that are all located centrally in large data centers and accessed via the internet.

Delivery Models

There are 3 ways to deliver cloud resources:

  1. Software-as-a-Service (SaaS)
  2. Platform-as-a-Service (PaaS)
  3. Infrastructure-as-a-Service (IaaS)

SaaS
Starting from the top, cloud computing services go from user friendly software-as-a-service products like gmail, instagram or discord. These don't need to be installed on your computer but are rather web apps that can be accessed through the internet. There is some user installation involved but these are referred to as cloud clients or thin clients, most of their infrastructure is on the cloud.

PaaS
Platform as a service includes cloud computing services that are useful to developers and offers remote machines that are already configured and usually serve one purpose. Examples include Heroku or Google App Engine.

IaaS
Services like AWS's EC2 or Google Elastic Engine are considered infrastructure-as-a-service as the user would be given a machine with its operating system installed only. This is the most control a user can have through cloud computing. You're essentially given a whole computer that can be accessed remotely.
Excluding bare metal deliveries but this is just one step below having an OS.

A big attribute of cloud computing is that it's elastic. Since the infrastructure behind this technology is huge (provided by private sector), a benefit is that it handles the load for you. Need more computing power?, storage space? or network nodes? It'll provision more for you on its own. It's scalable.

It's important to note that all resources in data centers are shared between users. There's usually not a single physical computer that you rent. This is referred to as resource multiplexing. It keeps things cheaper, increases availability and more efficient.

Cloud Vulnerabilities and Disadvantages

These usually center around geographical location and resource sharing. The cloud can have unpredictable performance since there's no choice of exactly which machine or resource you use.
There's a reliance on internet connection which varies for users.
Resource management also isn't perfect, sometimes this can affect performance in regards to data transfer.

Parallel Computing and Distributed Systems

This entire section was just about the implications of splitting tasks among multiple resources.
Parallel computing just being a broad concept that encompasses implementations like multiprocessing. Although in the context of cloud computing you can have tasks split to other resources outside a single computer.
"Distributed systems" is also a broad term and cloud computing is simply an implementation of it. It's exactly what it sounds like.

Back to Notes List