- Welcome to Azure Essentials.
In the next few minutes, we're going through your options
for compute and how you can increase the efficiency
and reduce the management effort of running your apps
by moving from virtual machines to container based
and serverless architectures in Azure.
This is important as you think through how to onboard
compute resources when moving an existing application
or workload into a VM or set of VMs in the cloud,
or when selecting the compute power you need
for new workloads.
The good news is that we've designed Azure to allow you
to comfortably run the vast majority of your Windows
or Linux apps and workloads and only pay for what you use.
Let's start with compute in Azure.
Firstly, Azure VMs give you access to the latest
hardware advances.
Secondly, virtual machines can be deployed and managed
inside of a virtual network.
This model is the closest to a traditional
on-premises environment, except that Microsoft manages
the infrastructure and you still manage the individual VMs
including patching, upgrades, app scaling and availability.
You can lift and shift your applications or workloads
onto a VM or VMs in Azure without needing to re-architect
them or write new code.
If you're migrating several VMs or a complex system,
then you're going to want to use tools like Azure Migrate
to help you assess the VM and IaaS compute resources
needed to migrate your existing virtual machines or
multi VM environments first, which we'll cover in
an upcoming Azure Essentials.
As you spin up your VMs, Azure offers a large catalog
of predefined first and third party reference VM images
that you can deploy.
Or you can find your own from within Azure,
or deploy images that you've already got.
If you're setting up dev test environments or new
production services, you're using multiple virtual machines,
you can use prebuilt Azure Resource Manager templates
to hydrate these environments or offer your own templates.
Azure offers a range of VM types, differing in the power
and performance they offer.
These range from basic entry level to burstable,
which is useful if you have web front ends and need to plan
for sporadic compute for traffic spikes,
to general purpose VMs with our D-series,
and all the way through to our F-series
for compute-intensive applications, utilizing
the latest Skylake processors.
And our L-series for storage and high throughput workloads.
Our memory optimized M-series is geared towards SAP based
workloads with up to 128 cores and 4TB of RAM.
We're continually updating our GPU's to support the most
graphic intensive workloads with our N-series,
which also supports InfiniBand connectivity for low-latency
and high throughput.
And our H-series for high performance computing allows you
to run some of your most demanding workloads.
We also give you the option of purpose built infrastructure,
with up to 20TB of RAM built for specific workload
requirements, such as SAP HANA or even a super computer
infrastructure in partnership with Cray.
You can learn more about what we do for high performance
computing in a dedicated Azure Essentials overview.
You can change the size of any VM at any time.
You can, for example, scale up capacity, and equally can
reduce compute power as you need to.
Scaling out your VMs and IaaS is made possible with Azure
VM scale sets, which enable you to add or remove VMs
automatically, based on the metrics and thresholds
that you set.
Grouping two or more virtual machines together in
an availability set will protect your workloads against
down time.
Azure will automatically place virtual machines
in the same availability set across different hardware
resources to avoid any single point of failure.
Azure now operates across 40 plus regions globally
and alongside availability sets, Azure provides
several other options such as traffic manager,
availability zones and regions, to make your applications
highly resilient, available, and scalable.
So that covers the virtual machine compute power
and the global coverage available in Azure.
Now to achieve greater efficiency and utilization of
your compute resources, what we call density,
Azure also offer support for containers, which offer a
consistent way to package and deliver your apps
with minimal code changes.
To understand their advantage over traditional VMs,
it helps to first understand the difference between
VMs and containers.
With virtual machines, we virtualize the hardware,
creating the illusion that there's a machine,
each with its own guest OS.
With containers on the other hand, we virtualize the
operating system.
We share the host OS and create an isolated OS instance
for each application.
This in effect is what allows you to achieve more density
as the app within the containers is not necessarily
using the whole OS or emulating hardware as a VM would,
but just what it needs, allowing you to run more apps
and processes on a container host.
Now because all OS dependencies are packaged up
in the container, containers also run more reliably and
allow for faster app delivery with near instant start times
versus the boot up and specialization times needed for
a VM operating with a full guest OS.
AKS in Azure is a service that helps you create,
configure, and manage a cluster of virtual machines that
are pre-configured to host container applications.
It serves as a built-in container orchestrator
for your environment.
The orchestrator as you can see here with Kubernetes,
not only allows you to scale out containers
almost instantly, but it also offers built-in management.
It manages cross-container dependencies and allows you to
tune health checks to alternate load balancing and
instantaneous app recovery in the case of app failure.
You can also complement AKS by spinning up containers
on demand without needing to provision a host VM
or know anything about orchestrators,
using a single command in Azure CLI.
This is useful in burst compute scenarios,
where instead of having to schedule additional VMs,
you can use ACI for compute on demand to give you
additional capacity during spikes in workloads.
And if you're new to containers, ACI is a good way
to get started.
As you can see, the more you adopt cloud-optimized
architectures to modernize your apps, the more Azure
can take care of efficiently managing your underlying
infrastructure and compute resources.
The ultra abstraction of underlying infrastructure
is serverless compute for on-demand, pay by the subsecond
compute triggered by events happening in real time
or on a schedule.
This is useful in cases where you don't need dedicated
compute resources, so now you don't have to worry about
density or predefining your compute resources up front
or the operational complexity of running applications.
You just write or bring your own code.
You can use Azure functions to fire up compute resources
as they're needed and as part of a defined and automated
visual workflow through logic apps.
Most of the time I don't need to write code for
the orchestration or to integrate with specific apps.
They're already over 150 plus connectors available today
for popular SaaS applications.
You can bind your serverless apps, for example,
to listen to events from Salesforce and Dynamics.
You can also push or create data into any
of these connectors.
Also if you've got apps that perform frequent polling,
you can convert those apps to use eventing with Azure
Event Grid.
Azure Event Grid offers an automated managed event routing
platform for serverless apps, and even apps running in VMs
or containers, helping you to save on CPU and
networking cycles.
It works by allowing applications to send events
when state changes occur using push notifications.
As events are received, Azure Event Grid facilitates
a triggering of programmatic actions by our event handlers.
And one last option to be aware of.
If you're building web apps, you can also take advantage
of the app service, which offers many serverless advantages
including security, load balancing, auto scaling,
and automated management as a service.
This is a great option for hosting websites and web apps,
rest API's and mobile back ends,
without being an expert on the infrastructure
or management to run your app.
Before we end, though, there are a few more Azure services
worth mentioning as you optimize your compute utilization.
First, it's good practice to monitor for
underutilized VMs.
At a subscription level, you can determine which to shut
down or resize with Azure Advisor.
Equally, Azure Cost Management helps you track VM sizing,
corresponding resources, cross subscriptions,
and cloud services.
So that was an overview of your options for compute
and how you can increase the efficiency and reduce
management effort of running your apps by moving from
virtual machine to container-based and serverless
architectures in Azure.
You can learn more from the learning experiences link shown,
and of course, keep watching Azure Essentials for
even more introductory topics.
Thanks for watching.