Azure architecture diagrams

Official Azure icons, rendered offline.

Azure architecture diagrams using the official icon set from a bundled copy, so they render without network access and keep rendering when upstream paths move.

When to use these

When not to

Common mistakes

Azure's service naming changes more often than its architecture patterns do. Label boxes with what the thing *does* as well as what it is currently called, and the diagram survives the next rename.

The 6 templates

Simple Architecture.puml

A small, legible starting point.

Simple Architecture: rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/Compute/AzureVirtualMachine.puml
!include AzurePuml/Databases/AzureSqlDatabase.puml
!include AzurePuml/Storage/AzureBlobStorage.puml
!include AzurePuml/Networking/AzureLoadBalancer.puml

title Azure Simple Architecture

AzureLoadBalancer(lb, "Load Balancer", "Standard")
AzureVirtualMachine(vm, "Web Server", "D2s v3")
AzureSqlDatabase(db, "Database", "SQL Database")
AzureBlobStorage(storage, "Static Assets", "Blob Storage")

lb --> vm
vm --> db
vm --> storage

@enduml

Notes and a copy button for this template

Web App Architecture.puml

App Service, SQL, storage: the common line-of-business shape.

Web App Architecture: rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/Compute/AzureAppService.puml
!include AzurePuml/Databases/AzureSqlDatabase.puml
!include AzurePuml/Databases/AzureRedisCache.puml
!include AzurePuml/Storage/AzureBlobStorage.puml
!include AzurePuml/Networking/AzureFrontDoor.puml
!include AzurePuml/Networking/AzureApplicationGateway.puml

title Azure Web App Architecture

actor User as user

AzureFrontDoor(cdn, "Front Door", "CDN & WAF")
AzureApplicationGateway(appgw, "App Gateway", "WAF v2")
AzureAppService(webapp, "Web App", "P1v3")
AzureRedisCache(cache, "Redis Cache", "Premium")
AzureSqlDatabase(db, "SQL Database", "Standard")
AzureBlobStorage(storage, "Blob Storage", "Hot Tier")

user --> cdn
cdn --> appgw
appgw --> webapp

The rest of this template, and how to use it

Serverless Architecture.puml

Functions, Event Grid, Cosmos.

Serverless Architecture: rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/Compute/AzureFunction.puml
!include AzurePuml/Web/AzureAPIManagement.puml
!include AzurePuml/Databases/AzureCosmosDb.puml
!include AzurePuml/Storage/AzureBlobStorage.puml
!include AzurePuml/Integration/AzureServiceBus.puml
!include AzurePuml/Integration/AzureEventGrid.puml
!include AzurePuml/Web/AzureCDN.puml
!include AzurePuml/Identity/AzureActiveDirectoryB2C.puml

title Azure Serverless Architecture

actor User as user

AzureCDN(spa, "CDN + Static Site", "Frontend")
AzureActiveDirectoryB2C(auth, "Azure AD B2C", "Auth")
AzureAPIManagement(apim, "API Management", "Developer")

AzureFunction(httpFunc, "HTTP Trigger", "Node.js")
AzureFunction(queueFunc, "Queue Trigger", "Node.js")
AzureFunction(eventFunc, "Event Trigger", "Python")

The rest of this template, and how to use it

Microservices (AKS).puml

AKS-based, with ingress and service-to-service traffic.

Microservices (AKS): rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/Containers/AzureKubernetesService.puml
!include AzurePuml/Containers/AzureContainerRegistry.puml
!include AzurePuml/Web/AzureAPIManagement.puml
!include AzurePuml/Networking/AzureApplicationGateway.puml
!include AzurePuml/Databases/AzureSqlDatabase.puml
!include AzurePuml/Databases/AzureRedisCache.puml
!include AzurePuml/Integration/AzureServiceBus.puml
!include AzurePuml/DevOps/AzureApplicationInsights.puml

title Azure Microservices Architecture

AzureAPIManagement(apim, "API Management", "")
AzureApplicationGateway(appgw, "App Gateway", "")

AzureKubernetesService(aks, "AKS Cluster", "") {
  rectangle "User Service" as userSvc
  rectangle "Order Service" as orderSvc
  rectangle "Product Service" as productSvc
  rectangle "Notification Service" as notifySvc
}

The rest of this template, and how to use it

Data Platform.puml

Synapse, Data Factory, Data Lake.

Data Platform: rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/Databases/AzureSqlDatabase.puml
!include AzurePuml/Storage/AzureDataLakeStorage.puml
!include AzurePuml/Analytics/AzureDatabricks.puml
!include AzurePuml/Analytics/AzureSynapseAnalytics.puml
!include AzurePuml/Analytics/AzureStreamAnalyticsJob.puml
!include AzurePuml/Analytics/AzureEventHub.puml
!include AzurePuml/Analytics/PowerBI.puml

title Azure Data Platform

' Data Sources
AzureSqlDatabase(sourceDb, "Source Database", "")
AzureEventHub(eventHub, "Event Hub", "Real-time")

' Data Lake
AzureDataLakeStorage(rawZone, "Raw Zone", "ADLS Gen2")
AzureDataLakeStorage(cleanZone, "Clean Zone", "ADLS Gen2")
AzureDataLakeStorage(curatedZone, "Curated Zone", "ADLS Gen2")

' Processing
AzureSynapseAnalytics(synapse, "Synapse", "Orchestration & DW")

The rest of this template, and how to use it

DevOps Pipeline.puml

Pipelines from commit to deploy.

DevOps Pipeline: rendered example
Show the source
@startuml
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!include AzurePuml/AzureCommon.puml
!include AzurePuml/DevOps/AzureRepos.puml
!include AzurePuml/DevOps/AzurePipelines.puml
!include AzurePuml/DevOps/AzureArtifacts.puml
!include AzurePuml/DevOps/AzureBoards.puml
!include AzurePuml/DevOps/AzureTestPlans.puml
!include AzurePuml/Containers/AzureContainerRegistry.puml
!include AzurePuml/Containers/AzureKubernetesService.puml
!include AzurePuml/Security/AzureKeyVault.puml
!include AzurePuml/DevOps/AzureApplicationInsights.puml

title Azure DevOps Pipeline

actor Developer as dev

AzureBoards(boards, "Azure Boards", "Work Items")
AzureRepos(repos, "Azure Repos", "Source")
AzurePipelines(pipeline, "Azure Pipelines", "CI/CD")
AzureTestPlans(tests, "Test Plans", "Testing")
AzureArtifacts(artifacts, "Artifacts", "Packages")
AzureContainerRegistry(acr, "Container Registry", "")
AzureKeyVault(vault, "Key Vault", "Secrets")

The rest of this template, and how to use it

Render these offline

Every template here ships in Gnomon and renders on your machine, with no account and nothing sent to a server. The browser editor is free and needs no install.

Get GnomonOpen the browser editor