AZ-900 Microsoft Azure Fundamentals Exam
Start here! Get your feet wet with the Microsoft cloud and begin your journey to earning your Microsoft Certified: Azure Fundamentals certification!
Gauge your current knowledge

Gauge your current knowledge

Start here! Get your feet wet with the Microsoft cloud and begin your journey to earning your Microsoft Certified: Azure Fundamentals certification!
Gauge your current knowledge

Gauge your current knowledge

Azure Virtual Machines (VMs) are part of the Infrastructure-as-a-Service (IaaS) model, giving you full control over the operating system. When you create a VM, you select a region where it will run, an operating system image as a template, a VM size for CPU and memory, and options for networking and managed disks. Because you have direct access to the OS kernel, you are responsible for installing software, configuring virtual networks, and managing security patches and updates.
To keep your applications running reliably, you can manage VMs individually or use built-in scaling and availability features. Availability Sets and Availability Zones protect your virtual servers from hardware failures or datacenter outages. For workloads with changing demand, Virtual Machine Scale Sets automatically add or remove VM instances to match current traffic. VMs are ideal for migrating existing applications to the cloud without rewriting code, hosting databases, or running custom software.
Containers offer a lightweight approach to application virtualization by running isolated apps on a shared host operating system. Because they package only the application code and its dependencies, containers start up much faster and use fewer resources than traditional virtual machines. This isolation ensures that your application runs consistently across different environments, from a developer's local computer to the cloud production environment.
Azure provides two primary services for running these workloads: Azure Container Instances (ACI) and Azure Kubernetes Service (AKS). You should choose ACI for simple, on-demand, or burst tasks where you want to run a container quickly without managing any underlying infrastructure. For complex architectures with multiple components, AKS provides a managed Kubernetes platform that automates container orchestration, scaling, and self-healing. These container services integrate with Azure Container Registry and CI/CD pipelines to simplify DevOps workflows.
Choosing how to host your application requires balancing your budget constraints with your performance requirements. Azure App Service offers a platform-as-a-service (PaaS) model with predictable pricing based on fixed tiers, such as Basic, Standard, or Premium. While this model provides automatic scaling and reduces management effort, it limits your ability to fine-tune the underlying operating system for highly specialized workloads.
Containers offer a more granular cost structure, where you pay for the underlying compute nodes and container registries. They maximize resource efficiency by sharing the host kernel, which enables rapid startup times and high application density. However, running many containers on the same host can create network or storage bottlenecks if they compete for the same physical hardware resources.
Virtual machines provide complete customization to optimize performance for complex workloads, but they also bring higher management overhead and variable costs. You are billed for VMs per second or minute while they are running, meaning idle resources still incur charges. These costs vary based on VM size and your choice of storage, such as standard hard drives or high-performance solid-state disks.
When evaluating hosting options, you must weigh deployment speed, resource management, scalability, and isolation. Web apps provide the fastest deployment speed because Azure manages the environment and provides built-in application stacks. Containers also deploy quickly using prebuilt images, making updates and rollbacks simple. Virtual machines take the longest to launch because you must first provision the operating system and configure the environment.
The level of resource isolation and scaling behavior also differs significantly among the three choices:
To select the right option, align your choice with your workload's specific architecture and operational needs. Choose web apps for simple websites or REST APIs that require low maintenance and fast deployment. Select containers for microservices and consistent development pipelines. Opt for virtual machines when hosting legacy applications, databases, or workloads that need custom server configurations.
Azure App Service is a PaaS offering that lets you run web applications without the burden of managing physical servers. It provides predefined runtime environments for popular languages like Python, Java, and Node.js on either Windows or Linux. To secure the environment, Azure locks down access to the operating system, though you can still deploy custom containers if you need specialized configurations.
Deploying a web app involves a few structured steps. First, you create a logical resource group to organize your assets. Next, you configure an App Service plan, which determines the compute size, pricing tier, and scaling limits for your application. Finally, you select your runtime or container image and deploy your code. When you update your application, restarting the App Service automatically pulls your latest deployment or container image.
The service includes several built-in management features to support production workloads. You can scale up your resources by moving to a higher pricing tier, or scale out by adding more instances to handle incoming traffic. Developers can use deployment slots to test new code in a staging environment before swapping it into production. Additionally, the service integrates with Azure Monitor for logging and features managed identities to securely connect to other Azure resources.