- 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.