Instructor: These days,
cloud computing can be found everywhere,
and it's really because there are so many great benefits
to using cloud computing.
And that's what we're going to focus on in this lesson
as we start talking
about the different characteristics of the cloud.
When we talk about cloud computing, there are a handful
of benefits or characteristics that we see
when we choose to use the cloud.
These include high availability, scalability, elasticity,
metered utilization,
shared resources and file synchronization.
Let's take a look at these.
First, we have high availability.
Now, high availability refers
to the fact that services
experience very little downtime when you're using the cloud.
This is because most of the services that are built
on the cloud are built to be highly reliable
and very fault tolerant.
This means that we can ensure a high level of availability.
Now, when it comes to availability,
we usually measure this in terms of a percentage
of how much uptime there is versus how much downtime.
So for example, the gold standard
inside of networks is known as five nines.
Five nines means 99.999% uptime
or availability as experienced by your end users.
This means that we can only have about five minutes
and 15 seconds of downtime every year.
That's right, only five minutes and 15 seconds
across the entire 365 days in a year.
Now to do that, that means you have
to have highly reliable systems that are highly available.
So if you have one website,
you're actually going to have at least two web servers
that are hosting that.
So if one goes down,
the other one is still carrying the load,
and that means the end user doesn't experience any downtime.
That's what we're talking about
when we talk about high availability.
For example, with my own website, diontraining.com,
we actually have a very highly available setup
that has been created using cloud services.
So depending on where you are coming from in the world,
you're going to reach one
of our multiple servers located around the world
that's closest to you to get a better experience.
Now, if your server is down for some reason,
you'll automatically be rerouted to another one
that's a little bit further from you, but it's still up.
And so that way, you still get the service you're looking
for, and that is a way to ensure high availability.
The second characteristic of the cloud we're going to talk
about is known as scalability.
Now, when we talk about scalability, this is talking
about the fact that we can increase the number
of people or the number of things
in our system at a linear rate or less than a linear rate.
Now, what I mean
by that is let's say I have 100 users using my system,
and it costs me $10.
Well, if I put 200 users on my system, it should cost me $20
or less, and that would be a linear scale.
Now, if I went from 100 users to 200 users
and the price went from $10 to $100,
that would be an exponential scale,
and we don't want that.
So as we're building out our cloud systems,
we're always looking for scalability,
and that means that even if we only have 10 users today,
tomorrow we might have 100.
The day after that, we have 1,000,
the day after that, we might have 10,000, and so on.
If you look at some
of the big companies out there like Facebook and Google,
and LinkedIn, and UNI, they have millions of end users
who are accessing their platforms every single day
and they're able to scale up based on the scalability
of cloud services,
because I don't have to go
and buy another $10,000 server to put
in my local data center,
because instead I can just use Amazon's
and use a portion of their capability as I need it.
Now, when it comes to scalability,
there are two ways you can scale.
One is to scale up, which is known as vertical scale.
This is by adding more resources
to a particular server or node.
For example, if you're using a cloud-based server
that has two virtual CPUs,
you can actually increase that to four virtual CPUs.
This is the idea of scaling up.
You're adding more resources,
whether that's more processors, more RAM, more storage,
more bandwidth, or things like that.
Now, on the other hand, you can also scale out,
which is known as horizontal scaling.
This is where you still use smaller machines,
but you use more
of them all working in tandem behind a load balancer.
So instead of having one server
that's handling all of your load and scaling upward
by increasing the CPUs and increasing the memory,
you can instead scale out and go from one server
to two servers or two servers to four, or four to eight,
and you can keep moving outward,
by adding additional servers behind your load balancer
that you can then handle additional traffic with.
Now, this brings us to our third area,
which is known as rapid elasticity.
Now, when we talk about rapid elasticity,
we're talking about the fact
that we can scale up or scale down very quickly.
Now this is done because we use automation
and orchestration with a lot of virtual machines
on these physical servers that are owned
by Amazon, Google, Microsoft,
and other corporations that allow us to use portions
or all of their services as we need to on demand.
And this gives us that rapid elasticity.
When you hear the term rapid elasticity
or elasticity in general, think about it as the fact
of the system's ability to handle changes to demand
in real time.
So let's go back
to the example of using my website at diontraining.com.
If right now I check my website,
and I have 1,000 students logged in,
and I check in five minutes from now,
and there's 10,000 students logged in,
my systems are designed to spin up
additional cloud resources and push some of that load
from those new users onto those additional services.
That is the idea of rapid elasticity.
Generally, when you're working in the cloud,
if you've designed your systems correctly,
you have the ability to rapidly have elasticity
and scale up very fast,
and then similarly, when the demand goes away,
you can quickly get rid
of those extra servers and bring them back down.
And the reason you'd want to do that is because
all those extra servers are going to cost you more money,
and if you don't have enough users to have them,
you don't want to pay for that
so you're going to release those, give it back
to your service provider
so they can then rent that service out to somebody else.
Instead, if you are doing an on premise model,
let's say I had 1,000 students today.
Well, for 1,000 students, I might need three web servers.
But if I go to 10,000 students,
I'm going to need another 15 web servers.
Well, to do that, I would have to buy 15 more servers.
I'd have to rack them.
I'd have to install all the software,
I'd have to configure them.
All of that takes time,
and so it's not very rapid in elasticity measures
for us to be able to scale up to meet that demand.
If you have a very slow growing business model, that's fine.
But if you're dealing with something that is high velocity
or any of these modern social media platforms,
and something you've done has gone viral,
and everyone goes to your website and starts flooding you,
if you don't have the ability to scale up rapidly,
you're going to miss out
on the ability to capture that traffic that's coming
from that viral incident.
And so you want to be able to build your stuff
in a rapid elastic manner,
and that's where the cloud allows us to do.
The fourth thing we have is known as metered utilization.
Now this goes back
to our rapid elasticity discussion we just had.
Now, when we are talking about metered utilization,
we are talking about the fact
that we are paying for a service on a pay per use basis.
So when we're using a metered service like a database,
they may charge us based
on the number of users or the number
of connections, or the number of data being stored.
Essentially, we're being charged based
on the actual usage of the service being consumed.
And we do that either on a second basis, a minute basis,
an hourly basis, or a daily basis, or even a monthly basis.
For example, I use AWS Lambda
for a lot of my backend automations and functions,
and they charge me based on my usage.
Now for every one million request I make,
they charge me 20 cents.
And so it's a very efficient way
for me to get my automations done
because it's a very, very low cost thing.
I can have millions and millions of requests
and it would only cost me a couple of dollars,
and that is the idea of a metered service.
Now, the other thing you'll see
is sometimes you'll see a distinction
between metered service and measured service.
Now, when we talk about metered or measured services,
we're really talking about the same thing
and it's our ability to pay
for something on a consumption basis.
But there is a difference here.
When you're using a metered service,
you're paying for things based
on the actual usage of what you've done.
So if you think
about your water bill or your electric bill at home.
If you turned on your water hose
and you filled up your swimming pool this month,
you're going to pay a lot more
for your water bill because you used a lot more water.
Now conversely, when you deal with a measured service,
this is more like your cell phone plan.
In most places, you pay a monthly fee for a certain amount
of usage of that cell phone, whether that's the number
of text messages, minutes, or data you're allowed
to consume.
And once you go up to that limit,
they will stop your service and not give you any more
until you pay them again.
So when you think about a measured service, think
about the fact that you're paying for a certain amount
of quantity upfront, and whether you use it or not,
you've already paid for that amount.
But when you're dealing
with metered service, you're paying for the exact amount
you're using.
And this is really one of the benefits of using the cloud,
is that most things are done on a metered basis
where you're only paying for what you use.
The next thing we're going to talk about is shared resources.
Now, when we talk about shared resources,
we're really talking about the ability to minimize our cost
because we're able to put our virtual machines
on somebody else's servers.
When you look at those servers that we're using
for Amazon, and Azure and Google Cloud,
those things are 10, 20,
$30,000 a piece for a good quality server.
And so if you need to buy one of those
to be able to host your WordPress blog,
you're not really using all that capacity,
because if you only have a couple hundred readers,
it's not going to use that much load.
So instead it makes a lot more sense
to take that one really expensive server,
cut it up into little pieces essentially,
and give it out in virtual machines,
out to everybody else who wants to use it.
So we might be able to host 50 or 100 WordPress blogs
on that one server instead of hosting just one.
That's the idea of using shared resources.
When we talk about shared resources, we're talking
about pulling together all the hardware to make
up the cloud provider's data center.
And that way it's not dedicated to a single individual
but we can all use it based on rapid elasticity
because, hopefully, what Amazon and Google,
and Azure are thinking is
that when there's high periods of demand for my company,
there might be low periods for your company and vice versa.
So instead of us having to have dedicated hardware resources
to each of our companies,
we can share resources across the board.
And the final characteristic
of the cloud is the ability to do file synchronization.
Now, the great thing about using a cloud-based resource
is that you can put something
in one place and it can then spread
to other places based on how you configure it.
For example, in my company, we rely
on file synchronization a lot because most
of our people are actually remote employees that work all
over the world, not just in our own offices.
So as I'm sitting here
in my office recording this right now,
I need a way to give this file over to my graphic designer
so that she can create all the different things
that you're seeing on the screen as I'm talking.
And then she's going to go and send it
over to another country where my video editor is located.
And when they're done, they're going to send it back
over to my offices where one
of my staff is going to do our quality assurance checks,
and then we're going to send it to another country
who's going to then upload it
to the final site where you're going to see it.
And so this one video has traveled probably to four
or five different places to be able to be that
finished product that you're seeing right now on the screen.
This is the idea
of file synchronization, because when I record this,
I'm recording it to a cloud based file server,
everyone on my team can access that file because we have
that synchronized copy on all of their devices
and across all of our servers around the world
so they can access it and do what they need to.
And as they're doing that,
it's not sitting just on their computer
but it's being synchronized across all of our cloud servers,
so everybody else along that path that needs to happen
between recording and publishing,
and then you watching it,
can happen across all those servers
in a very streamlined manner.
And that's one of the real big benefits
of doing cloud from a business perspective,
is that you don't have this server sitting in your office.
It's now sitting out in the cloud
in a data center that's protected, that's highly available,
that has the ability to be scalable,
and can be elastic in responding
to demands of higher and lower periods of demands.
We only have to pay for what we use
and we can share resources with other people
that we may not even know
because we're all sitting on the same physical server.
And these are all the things we're talking
about when we start talking about cloud characteristics
and why there's been this big migration
into the cloud by many companies around the world