Azure Fundamentals Part 3

3 min readJun 4, 2024


Azure virtual machines

Virtual Machines (VMs) provide Infrastructure as a Service (IaaS) by offering virtualized servers that you can fully customize with your choice of software. VMs are ideal for scenarios where you need:

  • Total control over the operating system (OS).
  • The ability to run custom software.
  • Custom hosting configurations.

Virtual Machine Scale Sets allow to create and manage a group of identical, load-balanced VMs. They enable you to centrally manage, configure, and update many VMs within minutes, making them suitable for large-scale services such as compute, big data, and container workloads.

Virtual Machine Availability Sets enhance resilience and high availability by ensuring VMs have staggered updates, diverse power, and network connectivity. This prevents losing all VMs with a single network or power failures. Availability sets group VM in two ways:

  • Update Domain: Group VMs to be rebooted simultaneously during maintenance, ensuring only one update domain is offline at a time. Each update domain has a 30-minute recovery period before the next group begins its maintenance.
  • Fault Domains: Group VMs by common power sources and network switches, distributing them across up to three fault domains to protect against physical power or network failures.

Use cases for VMs include:

  • Testing and development.
  • Running applications in the cloud.
  • Extending your datacenter to the cloud.
  • Disaster recovery.

Azure virtual desktop

Azure virtual desktop is a desktop and application virtualization service hosted in the cloud, allowing you to access a cloud-based version of Windows from any location. It provides centralized security management for user desktops through Microsoft Entra ID, enabling multifactor authentication to secure user sign-ins and granular role-based access controls (RBAC) to secure data access.

With Azure virtual desktop, data and applications are separated from local hardware, minimizing the risk of confidential data being left on personal devices. Additionally, user sessions are isolated in single and multi-session environments, enhancing security and ensuring a consistent user experience.

Azure containersContainers are a great choice for running multiple instances of an application on a single host machine. They are lightweight, designed to be easily created, scaled out, and stopped dynamically, allowing you to respond to changes on demand. If there is a crash or hardware interruption, you can quickly restart the containers. Docker is one of the most popular container engines, and Azure supports Docker.

Containers provide virtualized environments that abstract away the operating system and infrastructure requirements, allowing containerized applications to run alongside other containerized apps. While VMs virtualize hardware, containers virtualize the OS, enabling multiple lightweight containers to run on a single host.

Azure Container Instances (ACI) is a Platform as a Service (PaaS) offering that lets you upload your containers. The service will then manage and run them for you.

Azure container apps

Azure Container Apps are similar to Azure Container Instances in that they both allow you to quickly deploy and run containers without managing the underlying infrastructure. As a Platform as a Service (PaaS) offering, Azure Container Apps eliminate the need for manual container management. Additionally, they provide extra benefits such as built-in load balancing and scaling capabilities, enabling more elastic and resilient application designs. These features make it easier to handle varying workloads and ensure high availability and performance.

Azure Kubernetes Service

Azure Kubernetes Service (AKS) is a container orchestration service. An orchestration service manages the lifecycle of containers. When you’re deploying a fleet of containers, AKS can make fleet management simpler and more efficient.

Containers are often used to create solutions by using a microservice architecture. This architecture is where you break solutions into smaller, independent pieces. For example, you might split a website into a container hosting your front end, another hosting your back end, and a third for storage. This split allows you to separate portions of your app into logical sections that can be maintained, scaled, or updated independently.

Imagine your website back-end has reached capacity but the front end and storage aren’t being stressed. With containers, you could scale the back end separately to improve performance. If something necessitated such a change, you could also choose to change the storage service or modify the front end without impacting any of the other components.