- Let's first review the definition of cloud computing.
So the National Institute of Standards
and Technology here in the US,
otherwise known as NIST,
got together with industry leaders some years ago
and came up with an official definition of cloud computing,
and through a number of different drafts,
they were able to simplify
and distill it down to its real core essence,
and first, we have characteristics.
The characteristics of cloud computing would be one,
that services or features
or resources are retrieved via on-demand,
that they are available
to us by us asking for them directly,
so I can go to a service
and ask for a virtual machine
or a storage volume or some other type of resource,
and get it when I ask for it.
I get it at the time I make that demand or request.
And so on-demand really is
one of the core pieces of cloud computing
that gives rise to a level of automation
and flexibility and agility that we've never had before,
and a level of automation
that we perhaps have never had before.
The other characteristic would be broad network access,
meaning that the resources
that we have within the cloud can communicate
with each other across the network,
that we can get to them across the network,
that we have access to the Internet.
The third characteristic would be resource pooling.
In some cases we have multitenant environments, right?
There may be many cases
that we have a multitenant environment,
and there are some cases
where we can actually have a single tenant environment,
but if you were to zoom out and look at the big picture,
and you would see that even though our virtual machine
or our physical server might be a single tenant environment,
the rack is shared with other machines that are powering
or providing services to other customers,
and then of course, the data center itself
is shared by numerous customers.
The power, the cooling,
the network, and so on,
are all shared, so resource pooling is really the way
that cloud computing can offer the services that it does
at the prices that it offers them at.
The fourth characteristic would be rapid elasticity.
So elasticity speaks to the idea
that resources can grow and shrink.
They can grow vertically,
they can grow horizontally,
but rapid elasticity means
that if we need more storage now than we needed an hour ago,
if we need, suddenly need more capacity in our API
or our database today than we needed yesterday,
that we can get that capacity quickly and easily,
and the on-demand nature allows for that.
So rapid elasticity, the ability
to scale when we need to scale.
And then, lastly, we have a measured service.
And that's just a fancy way of saying pay-as-you-go.
So when we take the elastic compute cloud
or EC2 for example, if we ran a machine,
a virtual instance, for let's say an hour,
then we pay for an hour.
If we run it for two hours, we pay for two hours.
So we pay for what we use,
and within AWS, the trick
to really achieving the most cost savings
or the most cost-effective solutions
is to use what we really need, right?
So we pay for what we use,
it's our job to use what we really need
and no more and we'll talk more about that later on.
Now in terms of service models,
many of these we've heard before I'm sure,
starting with infrastructure as a service or IaaS.
Infrastructure as a service
is essentially those fundamental lower level
sort of raw building blocks such as raw computing
or storage volumes, right?
So we can build our application on top
of Amazon's compute power and storage and networking tools.
Then we have platform as a service.
In many cases within AWS,
we can offload the operational burdens
of the tools such as databases, for example, to AWS.
And so when certain things like that,
databases, the management of databases
like relational databases,
NoSQL and graph databases,
and other services, when those are kind of abstracted away,
that's when it crosses into platform as a service,
and we are leveraging that platform to run our applications.
And then lastly, as far service models go,
we have software as a service.
And that's generally what most of us are building.
We are leveraging the infrastructure
and platforms that AWS provides to build our own software.
So that's the definition of cloud computing,
that we can go to Amazon to the API,
to the management console,
and we can ask for a virtual machine,
and we can get a virtual machine on demand,
and that virtual machine has access to a network,
we can communicate with the Internet,
and we can get that virtual machine
at a low price because millions
of customers are pooling their resources
and allowing AWS to offer those things at those low prices.
And if we need to go from one EC2 instance
to 100 to 1000, we can do that.
We can scale rapidly very easily.
If we need our underlying storage volumes
to go from one gig to one terabyte to a petabyte,
in a short period of time,
we can do that as well,
and no matter how we make use of AWS,
we pay for what we use.
So that's the definition of cloud computing
and we will be talking more about this
and putting all of this into context throughout this course.