TC021 Scaling up and out_MM
0 (0 Likes / 0 Dislikes)
>>In this video, we're going to discuss scaling up and scaling out. Let's get started.
When deploying applications to the cloud, we want to make sure we have enough
compute, memory, and storage for our services to run smoothly.
As you may know, if we don't have adequate compute or memory resources,
our services may respond slowly or even totally fail to respond at all.
Without sufficient storage, we also may be unable
to store new records, and data can end up being lost.
This is challenging to estimate these needs in both present and future demands.
Maybe we're creating authentication mechanisms and document storage
for a growing business with growing needs.
Or maybe we're deploying services for an e-commerce site
where demands will spike before major holidays.
It can get tricky, but the good news is using cloud services
allows us to scale compute, memory, and storage resources as our requirements change.
There are two ways we can do this. We can scale up or we can scale out.
Scaling up means adding more CPU and memory resources to a single service instance.
So imagine we have a virtual machine that hosts a back end for a website.
And that CPU is maxed out at 100% and you're using all the memory.
So it's very slow to respond and possibly even dropping requests.
We can scale up this individual virtual machine,
which effectively gives it a more powerful virtual processor
with more virtual cores and more system memory.
This is great when we have a single system that is in need of more resources.
Scaling up is the only choice when we need to have more compute resources
and we don't have the ability to split the processing
into smaller compute tasks across multiple machines.
Scaling out, on the other hand, means adding additional instances of a service,
which means having two or more identical services running in parallel,
allowing the ability to add or remove instances as demand changes.
It's considered a more modern approach and works very well
when your solution is architected into smaller pieces.
For example, by separating a web front end, a back end,
and a storage environment into separate services.
However, scaling out often requires additional services to manage load balancing.
For instance, imagine that we need to scale a website to a pre-holiday sale.
We would not only need additional instances of the web service,
but we would also need to balance the requests between all of those instances.
And if this was an e-commerce site, all of those instances
would need to have access to shared storage,
so customer data would not get lost between all those different site visits.
Scaling your application is a great way to adjust
your resourcing and cost to meet the changing demands.
It also reduces the risks of estimating resources incorrectly before you deploy your cloud solution.
But don't forget, you can also reduce your scale on demand as well.
Because what goes up or out can also come back down or in as the demands dictate.
Plus, Azure can typically be scaled up or scaled out, often with little or no downtime,
which allows you to deploy services that can keep up with your users' dynamic demands.