- Hello, Cloud Gurus.
I'm Travis Roberts.
Welcome to Cloud Provider Comparisons.
In this series,
we take a look at the different cloud providers.
We look at what's similar, what's different,
and other facts that help you understand
the brave new world of cloud computing.
Compute is often one of the first resources
organizations deploy to get started with cloud computing.
In this video, we examine the computing options available
from Amazon Web Services, Microsoft Azure,
and Google Cloud Platform.
If you've been in IT for any amount of time,
you're probably familiar with servers.
Over the years, they have progressed
from standalone white boxes to power hungry stacks
of super dense computers
that can make a room hotter than the sun
if not cooled properly.
As time went on, we virtualized the OS on the hardware
to increase server density and better utilize that hardware.
The natural progression is to move those servers
into the cloud,
removing the need to manage power, cooling,
and all the tasks that come with server hardware,
freeing IT professionals to do the important work
that adds value to the organization. And watch cat videos.
If you'd like to understand how Azure, Amazon Web Services
and Google Cloud Platform implement these compute resources,
stick around.
(upbeat music)
Before we begin our comparison,
let's start with a quick overview of platform as a service
or PaaS and infrastructure as a service or IaaS.
This is important to know because management responsibility
is different for those two options
for deploying services in the cloud.
An example of an IaaS service
would be to deploy a web server into the cloud provider
to host a website, while deploying a website
to a hosted web service would be an example
of using a PaaS service.
(upbeat music)
The shared responsibility model
outlines who is responsible for managing different aspects
of services deployed in the cloud.
For example, an organization doesn't have to worry
about physical servers and virtualization software
when deploying IaaS servers on Azure,
however, OS patching and software updates
is still part of ongoing management.
This is important to understand when talking about compute
with cloud services, because in most circumstances,
compute is an IaaS service
and much of the management responsibility
falls on the customer.
(upbeat music)
At the heart of of IaaS compute
is the virtual machine sizes offered
and specific sizes and features frequently change
with each provider.
AWS has Elastic Cloud Compute or EC2.
GCP refers to their service as Compute Engine.
And Azure has virtual machines to provide compute resources
similar to what we've all enjoyed with our on-premise VMs.
Coming up, we'll explore the size and performance options
available with each as well as the operating systems,
availability and scalability
and some cost savings options available with each provider.
Let's get started with an overview
of the performance options available from each.
Amazon EC2 offers a general purpose VM for common workloads,
a compute optimized type for applications
that require high performance processing
and a memory optimize options for applications
that benefit from large amounts of memory,
such as applications that process data in memory.
AWS also offers an accelerated compute option
for hardware accelerated processing,
leveraging GPUs and a storage optimized option
for workloads that require high sequential reads
and write access to datasets.
And it also supports burstable performance instances,
a cost-effective option for applications
with a low baseline CPU usage.
GCP Compute Engine also supports general purpose VMs
along with compute optimize
that offer high performance per CPU core.
There's a memory optimize option and accelerated VMs,
and just like AWS,
there's a shared core or burstable VM option available.
At the time of recording,
GCP does not offer a storage optimize option.
Just like the others,
Azure compute offers similar general purpose VMs
and compute and memory optimized VMs.
Accelerator optimized VMs are available
referred to as GPU type.
Azure offers a storage optimized virtual machine,
as well as burstable options for workloads
that don't require consistent access to the CPU.
(upbeat music)
Let's move on the different types of operating systems
available with each provider.
The supported operating systems differ slightly
between cloud providers.
All three offer ready to use images
for multiple versions of Windows and Linux distributions.
In addition, AWS offers Mac OS.
And in Azure, a multi-user version of Windows 10,
aptly called Windows 10 Multi-User is supported.
All providers offer images
for a wide variety of Linux distributions.
Some providers supply their own flavor of Linux,
such as AWS with Amazon Linux.
Specific distribution versions differ between providers.
Keeping services available is important
and running services in the cloud
provides a greater flexibility
in how and where services are deployed.
Let's look at the options for availability
and scalability next.
(upbeat music)
Each cloud provider distributes workloads across regions.
A region as a grouping of one or more data centers.
Distributing workloads across regions
provides high availability
if one region should experience an outage.
Each region is divided into multiple independent,
but well connected zones.
Think of these as separate data centers
located in the same city.
They're referred to as zones in GCP and availability zones
in Azure and AWS.
Regions and zones are important
when planning compute services in the cloud for two reasons.
First, they provide high availability.
If workloads are distributed across multiple regions
and zones, the application or service is resilient
in the event of a region or zone failure.
Regions also allow us to put the workload closer
to the customer.
Latency is a factor with application performance.
And until we can change the laws of physics,
physical placement will be a consideration
when deploying compute and other services in the cloud.
Azure, GCP and AWS all offer multiple regions and zones,
but not every region supports every type of virtual machine.
Some applications such as machine learning
or seasonal order processing
benefits from dynamically increasing the number of VMs
as the load increases.
The ability to dynamically add more nodes
to a resource pool when needed
and deallocate those nodes when not in use
provides capacity on demand while cutting costs
when the resource is not needed.
For this type of workload,
Amazon EC2 offers Auto Scaling
allowing the number of EC2 instances
to automatically scale out as demand increases
and scale those instances down when the demand decreases.
This can be done based on metrics such as CPU utilization.
EC2 also offers a feature called Fleet Management,
which extends Auto Scaling to maintaining availability
by automatically replacing unhealthy
or unavailable instances.
In addition, Predictive Scaling uses machine learning
to predict and add capacity based on usage patterns.
Auto Scaling is available in multiple zones,
referred to as availability zones in AWS.
GCP has groups of VMs called managed instance groups
or MIGs.
A MIG can be managed as a single entity.
It supports Auto Scaling to increase and decrease
the number of VM instances based on load.
Scaling policies are set by CPU utilization,
capacity or load balancer, or custom metrics.
Schedule-based auto-scaling is also an option
with GCP providing for an increased capacity
during times of known increased workloads.
Another option called Auto-Healing can recreate VMs
that fail a health check.
Managed instance groups can be deployed to a single zone
or across multiple zones in the same region.
Azure, just like the others provide a centrally managed pool
of identical VMs called a scale set.
The number of VMs at a scale set can increase
and decrease automatically with auto-scale policies
based on VM utilization.
And auto-scale schedule can scale up and down
based on times of anticipated high utilization.
And automatic instance repair option
can repair failed instances in a scale set
if they become unavailable.
Scale sets can be deployed in availability zones in Azure
for high availability across the region.
We've talked a lot about hardware,
but what about software?
Let's move on to options for licensing the OS
running on the virtual machine.
(upbeat music)
Using open-source Linux servers,
you only pay for the virtual hardware using the OS.
For the Windows OS,
there's an option to pay for the server OS
with the hardware.
This makes the cost of the Windows VM higher
than a comparable Linux VM.
The advantage to attaching the license to the VM, however,
is that the VM is in compliance with Microsoft licensing.
Organizations with Microsoft volume licensing
and an active software assurance contract
may qualify for hybrid use benefits.
This is a bring-your-own license option
and applies existing Microsoft volume licensing hybrid
use benefits to the virtual machine.
The price of the VM is then comparable
to that of a Linux VM.
(upbeat music)
There are other money-saving options
for both Windows and Linux VMs.
Each provider has a way of reducing the cost of a VM
for some commitment of running the VM
for a given amount of time.
With GCP, a committed use discount provides a discount
of up to 70% off the pay as you go price
with a one or three year committed use discount.
Both AWS and Azure has a similar option
called reserved instances.
A reserved instance applies a discount
to the virtual machine price
with a one or three-year commitment of service.
Azure, AWS and GCP have another class of VMs
that provide a deep discount, up to 90% in some cases,
but with a catch.
They can be shut down at any time
when the provider needs capacity for premium services.
This is an excellent option for stateless
and fault-tolerant applications that can be interrupted
and resumed once the resource is back online
or in dev test environments that don't need the availability
of a production environment.
In GCP, these are referred to as Preemptible VM instances.
In AWS and Azure, these are referred to as spot instances,
and there's another option available for applications
that don't need consistent access to the CPU.
These are virtual machine types for workloads that sit idle
with an occasional burst of activity.
In GCP, these are referred to as Shared Core VMs.
Shared Core VMs use time slicing on the physical processor
and allow conditional bursting for short periods of time.
Azure B-Series and AWS T Instances
have similar functionality.
They provide a baseline CPU cycle and the VMs build credits
during time of low utilization.
This credit can then be used for periods of high CPU usage.
The baseline and the amount of credit
depend on the specific size in the VM family.
Sometimes you don't even need the VMs
to be available 24 by seven.
Dev and test environments or batch processing
that only run occasionally, for example.
All three providers have the option to stop
and terminate a running VM.
This deallocates the VM from the service
and stops related charges.
Other associated charges, such as disc storage still apply.
Both AWS and GCP offer another option,
the ability to pause a running VM,
referred to as hibernate in AWS and suspend in GCP.
This option pauses the VM preserving the memory state
and the associated settings such as IP address,
kind of like closing the lid on a laptop.
All three providers offer a wide variety of VM sizes
and options to fit the needs of any project.
Along with the size, there's also cost savings options
with reserved instances, shared and burstable CPUs
and bring your own licensing.
I hope this helps you distinguish the similarities
and the differences across the cloud computing options
from AWS, Azure and GCP.
Still looking for more information on running applications
in the cloud? Check out A Cloud Guru's wide selection
of on-demand courses to address your cloud computing needs.
That brings this cloud comparison
compute addition to an end.
Please subscribe and give us a thumbs up if you found this useful.
Don't forget to click the bell icon to get notifications of new content.
Thanks for joining me and keep being awesome Cloud Gurus.