# Cloud Computing Fundamentals

We are starting a new series on the AWS Cloud Computing Platform from an Associate Solution Architect perspective. We will try to update it when we discuss it at the professional level.

# Cloud Computing - what is it...really
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared
pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that
can be rapidly provisioned and released with minimal management effort or service provider interaction.
This cloud model is composed of five essential characteristics, three service models, and four deployment models.

5 Characteristics that make any system cloud

## On demand self service
A consumer can unilaterally provision computing capabilities, such as
server time and network storage, as needed automatically without requiring human
interaction with each service provider.

OR

The customer can provision capabilities (i.e features, products) as required automatically without needing human interaction

## Broad network access
Capabilities are available over the network and accessed through standard
mechanisms that promote use by heterogeneous thin or thick client platforms (e.g.,
mobile phones, tablets, laptops, and workstations).

## Resource pooling 
The provider’s computing resources are pooled to serve multiple consumers
using a multi-tenant model, with different physical and virtual resources dynamically
assigned and reassigned according to consumer demand. 
There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage,
processing, memory, and network bandwidth.
Resources are pooled to serve multiple customers using a multi-tenant model
This characteristic deals with abstraction and economies of scale

**Economy of scale**: 
The cost advantage that a company gains when it increases its production. As quantity of goods increase, the per unit cost the goods decreases.
In cloud computing context, this means that the SP buys larger number of devices for a pool of customers and can maintain larger buffer for growth
The customer can make use of the devices when needed and stop using it when there is lesser demand. The vendor or service provider manages the capacity
But there is data isolation so that the data of one customer is not visible to another

## Rapid elasticity
Capabilities can be elastically provisioned and released, in some cases
automatically, to scale rapidly outward and inward commensurate with demand. To the
consumer, the capabilities available for provisioning often appear to be unlimited and can
be appropriated in any quantity at any time.

OR

Capabilities(Resources) can be elastically provisioned and released to scale rapidly outward and inward with demand. 
To the customer the capabilities available for provisioning often appear to be unlimited.
Cost also increases and decreases appropriately with demand.
Elasticity also means under provisioning that leads to performance issues to customers and over-provisioning which leads to financial wastage, can be avoided.

## Measured service
Cloud systems automatically control and optimize resource use by leveraging
a metering capability at some level of abstraction appropriate to the type of service (e.g.,
storage, processing, bandwidth, and active user accounts). Resource usage can be
monitored, controlled, and reported, providing transparency for both the provider and
consumer of the utilized service.

OR

Resource usage can be monitored, controlled, reported and billed.
Provide on-demand billing

%[<a href="https://www.freepik.com/free-vector/cloud-computing-digital-technology-with-gears_12071205.htm#query=cloud%20computing%20technology&position=6&from_view=search">Image by starline</a> on Freepik]
