Deployment Diagram Example
The Deployment diagram shows where containers are hosted and what infrastructure they run on — servers, cloud services, load balancers, network zones, and deployment environments.
See Example C4 Diagrams for an overview of all diagram types and when to use each.
To use this example in Nodinite, copy the Mermaid markup below and follow the Creating Your First C4 Diagram import walkthrough to create a Diagram Set, import the markup, and bind nodes to your Repository.
When to Use
- Documenting production infrastructure for operations and DevOps teams
- Planning cloud migrations or hybrid architecture changes
- Security reviews — identifying network boundaries and data flows across zones
- Does not show internal container logic — that is in L2 and L3
Full structural support: Infrastructure groupings (
Deployment_Nodeboundaries) are persisted with their boundary type and round-trip correctly through the Mermaid generator — imported Deployment diagrams produce identical output when regenerated.
No Person shapes in Deployment diagrams:
PersonandPerson_Extmust not appear inC4Deploymentdiagrams. Deployment diagrams describe infrastructure — human actors are a concern of L1 Context and Dynamic diagrams. Adding aPersonhere will produce a render error.
Example: O2C Production Deployment (Azure + On-Premises)
This example deploys the O2C containers from the L2 Container Diagram onto their real production infrastructure. It exercises:
- Nested
Deployment_Node— Azure Region > App Service Plan, Azure Region > Data Tier, On-Premises > ERP Zone Container(replica annotation) — scaled-out ERP Integration Worker replicas noted inline in the description (×3);Container_Instanceis a C4-PlantUML macro not yet supported by MermaidContainerDb— Order Database (Azure SQL) in the data tierContainerQueue— Planning Event Bus (Azure Service Bus) in the integration tierRel_D— top-to-bottom cross-zone flows (cloud → on-premises VPN)Rel_R— same-tier lateral flows (API → database peer in the data tier)- No
Personshapes — infrastructure-only view by design
| Preview | Mermaid Code |
|---|---|
|
C4Deployment
title O2C Platform — Production Deployment (Azure + On-Premises)
Deployment_Node(azure_region, "Azure West Europe", "Azure Region") {
Deployment_Node(app_service, "App Service Plan (P3v3)", "Azure App Service") {
Container(portal_app, "Portal", "React.js + ASP.NET Core", "Customer-facing order submission and confirmation portal")
Container(rcv_order_svc, "INT1337-RCV-Order-Incoming", "ASP.NET Core Worker", "Receives and validates inbound order files")
Container(snd_confirm_svc, "INT1337-SND-Confirm-Outgoing", "ASP.NET Core Worker", "Dispatches CSV order confirmations to customers")
Container(erp_worker, "ERP Integration Worker (×3)", "ASP.NET Core Worker", "Three auto-scaled worker replicas forwarding orders to ERP")
}
Deployment_Node(data_tier, "Data Tier", "Azure Virtual Network / Private Endpoints") {
ContainerDb(order_db, "Order Database", "Azure SQL (Business Critical)", "Primary order and confirmation records store")
ContainerDb(order_store_db, "Order Store", "Azure SQL", "Deduplication and retry store for inbound orders")
}
Deployment_Node(integration_tier, "Integration Tier", "Managed Services") {
ContainerQueue(planning_bus, "Planning Event Bus", "Azure Service Bus Premium", "Reliable async queue for production schedule notifications across zones")
}
}
Deployment_Node(on_prem, "On-Premises — Company Data Centre", "Fortinet VPN Gateway") {
Deployment_Node(erp_zone, "ERP Zone", "Internal Network / VLAN 10") {
Container(erp_app, "ERP", "SAP ERP (on-premises)", "Order entry, inventory management, and production scheduling engine")
Container(ent_order_svc, "INT1337-ENT-Order-Entry", "BizTalk Server", "Receives XML order entries and writes to ERP API")
Container(pln_scheduled_svc, "INT1337-PLN-Order-Scheduled", "BizTalk Server", "Emits production schedule events back to Azure Service Bus")
}
Deployment_Node(wms_zone, "WMS Zone", "Internal Network / VLAN 20") {
Container(wms_app, "WMS", "Legacy WMS (on-premises)", "Warehouse packing and delivery operations")
Container(pkg_svc, "INT1337-PKG-Order-Packed", "BizTalk Server", "Records packing completion and triggers logistics handover")
Container(dlv_svc, "INT1337-RCV-Order-Delivered", "BizTalk Server", "Ingests delivery confirmation from logistics partner")
}
Deployment_Node(finance_zone, "Finance Zone", "Internal Network / VLAN 30") {
Container(erp_finance_app, "ERP-Finance", "SAP FI Module", "Invoice generation and revenue recognition")
Container(inv_svc, "INT1337-INV-Order-Invoiced", "BizTalk Server", "Creates invoice record in ERP-Finance upon delivery confirmation")
}
}
Rel_D(portal_app, planning_bus, "Publishes order events", "AMQP / TLS")
Rel_R(portal_app, order_db, "Reads and writes order state", "TDS / Private Endpoint")
Rel_R(rcv_order_svc, order_store_db, "Deduplication lookups and inserts", "TDS / Private Endpoint")
Rel_D(erp_worker, ent_order_svc, "Forwards validated order XML via VPN", "HTTPS / mTLS")
Rel_D(planning_bus, pln_scheduled_svc, "Delivers schedule events to on-premises", "AMQP / VPN")
Rel_R(pln_scheduled_svc, erp_app, "Writes scheduled order to ERP", "ERP API")
Rel_R(ent_order_svc, erp_app, "Creates ERP order entry", "ERP API")
Rel_D(erp_app, planning_bus, "Emits production schedule event", "AMQP / VPN")
Rel_R(pkg_svc, wms_app, "Updates WMS packing state", "WMS API")
Rel_R(dlv_svc, wms_app, "Records final delivery confirmation", "WMS API")
Rel_D(dlv_svc, planning_bus, "Publishes delivery event", "AMQP / VPN")
Rel_R(inv_svc, erp_finance_app, "Creates invoice record", "ERP-Finance API")
|
|
Shape Coverage
This example exercises the following Deployment diagram shape vocabulary:
| Shape used | Macro | Notes |
|---|---|---|
| Infrastructure node | Deployment_Node |
Azure Region, App Service Plan, Data Tier, Integration Tier, On-Premises, ERP/WMS/Finance zones — 3 levels deep |
| Container (generic) | Container |
Portal, integration services, ERP, WMS, ERP-Finance |
| Container Database | ContainerDb |
Order Database, Order Store (both Azure SQL) |
| Container Queue | ContainerQueue |
Planning Event Bus (Azure Service Bus Premium) |
| Container (replica annotation) | Container |
ERP Integration Worker — replica count (×3) carried in the description; Container_Instance is C4-PlantUML only and not supported by Mermaid |
| Downward connector | Rel_D |
Cross-tier flows — cloud App Service → Service Bus, Service Bus → on-premises |
| Rightward connector | Rel_R |
Same-tier lateral flows — API → database peers, service → ERP API |
| No Person shapes | (intentional) | Person and Person_Ext must not appear in Deployment diagrams |
Next Step
Ready to use these diagrams in Nodinite? Creating Your First C4 Diagram walks through creating a Diagram Set, importing Mermaid markup, and binding nodes to your Repository.
Related Topics
- Example C4 Diagrams — Overview of all diagram types
- L2: Container Diagram Example — The containers placed in this deployment
- Dynamic Diagram Example — Runtime interaction sequence
- What is C4 Diagrams?
- Creating Your First C4 Diagram