Skip to main content
Cloud

Azure Tutorial with Examples.

Microsoft Azure tutorial: Virtual Machines, AKS, Azure Functions, Entra ID, Blob Storage and the wider Microsoft cloud ecosystem.

Architecture at a glance

Click any box to open the lesson that teaches it

Azure architecture at a glance

az CLI → Entra ID → VNet → VMs / Functions → Blob / SQL, watched by Monitor

Azure architecture at a glance An az CLI call runs as an Entra ID identity restricted by an RBAC role assignment, inside a resource group. Compute lives inside a VNet's subnets and NSGs: VMs for servers you manage, Functions for serverless code. Both call Blob Storage for object storage and Azure SQL for a managed database. Bicep and ARM templates provision the whole stack as one file and Azure Monitor watches it with metrics and KQL log queries, with Cost Management and the Well-Architected Framework's five pillars as the final check. Azure CLI subscriptionresource group Entra ID RBAC · roles VNet subnets · NSG VMs NSG · SSH Functions serverless Data Blob Storage containers · tiers Azure SQL server · database Deploys & watches Bicep & ARM templates · deploy Azure Monitor metrics · KQL Cost & reliability Cost Management cost analysis · 5 pillars
How it fits together (5 steps)
  1. Every call starts from the az CLI, confirmed against the right subscription before anything runs, inside a resource group that holds everything created below so it can be deleted as one unit.
  2. That call only works as far as its Entra ID role assignment allows: a role scoped to the wrong resource group gets a real authorization error until the scope is fixed — RBAC roles are separate from Entra ID's own identity-management roles.
  3. Compute lives inside a VNet, where a subnet's NSG has to allow a port before anything reaches it, independently of what the VM's own NSG allows. VMs run a server you SSH into once port 22 is open; Functions run the same kind of code with no server to manage, at the cost of a cold start on the first invocation.
  4. Both call the data layer: Blob Storage holds objects in a container across hot, cool and archive tiers, and Azure SQL runs a managed database you can restore to a point in time.
  5. Two services wrap the whole stack: Bicep and ARM templates deploy every resource above as one declarative file that validates before anything is created, and Azure Monitor collects the metrics and KQL-queried logs that watch it while it runs. Cost Management and the Well-Architected Framework's five pillars are the last check before calling it production-ready.

Beginner

Start here — no prior experience needed

4 lessons

Intermediate

For developers with core concepts down

13 lessons
azure intermediate
5 min read

Build a VNet with two subnets, apply an NSG, then walk the exact debugging sequence for a VM that can't reach the internet.

azure intermediate
5 min read

Provision an Azure SQL Database and logical server, connect with sqlcmd past a firewall error, then restore to a point in time after a bad delete.

azure intermediate
5 min read

Write an HTTP-triggered function, deploy it with func and az functionapp, invoke it twice, and see the timing gap between cold start and a warm call.

azure intermediate
5 min read

Write a minimal Bicep file, deploy it with az deployment group create, then read the exact error output from a deployment that fails validation.

azure intermediate
5 min read

Read a VM's CPU metrics, query its logs with Kusto (KQL) in Log Analytics, and wire both into an alert rule that fires on a real threshold breach.

azure intermediate
5 min read

Create a Cosmos DB container with a partition key, upsert items into it, and read one back with the Python SDK against the official vNext emulator — then see why reading with the wrong partition key 404s instead of finding the item a different way.

azure intermediate
5 min read

Run a parameterised SQL query and a cross-partition aggregate against Cosmos DB's vNext emulator with the Python SDK, and find enable_cross_partition_query is never enforced client-side — it's just a request option the server acts on.

azure intermediate
5 min read

Patch a Cosmos DB item atomically with the Python SDK, then see what an optimistic-concurrency replace actually does: a stale ETag raises a 412, and the fix is reading the item's current ETag again before retrying, not just resubmitting the same write.

azure intermediate
5 min read

Send and receive messages through an Azure Service Bus queue with the Python SDK against the official Service Bus Emulator in Docker, and see what complete_message actually does: a message a reader already received doesn't come back on the next receive.

azure intermediate
5 min read

Reject a bad message into Azure Service Bus's dead-letter queue with the Python SDK against the official emulator, and read it back from the DLQ with the reason attached — a message a consumer actively rejects, not one that silently vanished.

azure intermediate
5 min read

Publish one message to an Azure Service Bus topic and see it fan out to two subscriptions with the Python SDK against the official emulator — then find out a SQL filter matches application properties, not whatever's inside the message body.

azure intermediate
5 min read

Store and read Key Vault secrets with the Python SDK against the Lowkey Vault emulator: every set_secret call creates a new version rather than overwriting, get_secret without a version returns the newest one, and a stale version id raises a 404.

azure intermediate
5 min read

Delete a Key Vault secret against Lowkey Vault: get_secret 404s immediately, but the secret stays recoverable in a deleted-items list until purge_deleted_secret removes it — which purge protection can block even in the emulator.

Advanced

Production-grade patterns for experienced engineers

2 lessons

Also part of Azure

Taught in other topics. Each link opens the lesson in its home topic.

5 lessons