Skip to content

Step 7 — As-Built Docs

As-Built Architecture

Cost Distribution

Cost Comparison

Compliance Gaps


Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Design DocumentDemo IndexOperations Runbook

Version: 1.0 Date: 2026-03-11 Author: Generated by Workload Documentation Generator Status: Complete


This as-built design document captures the actual Azure deployment state for the FreshConnect MVP workload after successful Step 6 deployment.

Intended Audience:

  • Solution Architects
  • Operations/SRE Teams
  • Security & Compliance Teams
  • Development Teams

Cloud-based farm-to-table ordering platform connecting farms, restaurants, and consumers across Scandinavia. Deployed as a cost-optimized N-tier web application in swedencentral with private data access paths for SQL, Storage, and Key Vault.

Business Objectives:

  • Reduce order errors to below 1%
  • Enable near-real-time order and inventory processing
  • Maintain GDPR and PCI-DSS aligned security controls under startup budget
ObjectiveTargetImplementation
Availability99.9%App Service Standard S1 with autoscale min 2, max 3
Performancep95 API < 500 msCo-located App Service + SQL in Sweden Central, S0 SQL baseline
SecurityPrivate data paths, no secret sprawlKey Vault + Managed Identity + private endpoints + public network disabled on data services
Scalability3x seasonal trafficCPU autoscale policy 70% up / 30% down

Constraints:

  • Budget ceiling around EUR 1,000/month
  • EU data residency and policy-enforced tagging

Assumptions:

  • Workload remains single-region for MVP
  • Payment provider remains tokenized/redirect model (no CHD in Azure estate)
RoleTeamResponsibility
Platform OwnerNordic Fresh Foods EngineeringProduct and platform ownership
OperationsInfraOps / SRERuntime operations and incident response
Security & ComplianceGovernance + SecurityPCI/GDPR control evidence and remediation

System Context Diagram - nordic-fresh-foods

Source: As-built architecture Excalidraw source

CategoryCount
Compute3
Networking13
Data6
Security1

The workload uses a single VNet (10.0.0.0/16) with 3 subnets:

  • snet-app (10.0.1.0/24) delegated to Microsoft.Web/serverFarms
  • snet-data (10.0.2.0/24) reserved for data tier
  • snet-pe (10.0.3.0/24) for private endpoints (SQL, Blob, Key Vault)

Private DNS zones are linked to the VNet:

  • privatelink.database.windows.net
  • privatelink.blob.core.windows.net
  • privatelink.vaultcore.azure.net

Public network access is disabled for SQL Server, Storage Account, and Key Vault. App Service remains public (azurewebsites.net) with HTTPS-only.


Storage account stnffprod7jrcjfo3iqckk is deployed as StorageV2 with Standard_LRS.

Key configuration:

  • enableHttpsTrafficOnly: true
  • minimumTlsVersion: TLS1_2
  • allowBlobPublicAccess: false
  • allowSharedKeyAccess: false
  • publicNetworkAccess: Disabled
  • Network default action: Deny

Blob containers listed in deployment summary: assets, product-images.


Compute tier consists of:

  • App Service Plan asp-nordic-fresh-foods-prod (Linux S1, capacity 2)
  • Web App app-nordic-fresh-foods-prod-7jrcjf (state: Running)
  • Autoscale autoscale-asp-nordic-fresh-foods-prod (2-3 instances)

Operational compute settings observed:

  • httpsOnly: true
  • ftpsState: Disabled
  • minTlsVersion: 1.2
  • System-assigned managed identity enabled
  • VNet integration to snet-app

Identity model:

  • User identity: Microsoft Entra External ID (application-level auth)
  • Workload identity: System-assigned managed identity on App Service
  • SQL admin: Entra group (nordic-foods-dba), Azure AD-only authentication enabled

RBAC evidence:

  • App Service managed identity granted Key Vault Secrets User on Key Vault scope.

ControlImplementationEvidence
TLS 1.2+SQL min TLS 1.2, Storage TLS 1.2, Web App TLS 1.2az sql server show, az storage account show, az webapp show
HTTPS-onlyWeb App + StoragehttpsOnly: true, enableHttpsTrafficOnly: true
Managed IdentityApp Service system-assigned identityApp Service principal ID 24cd6768-7247-43ac-a1d2-9a7f22000a40
Network isolationSQL/Storage/KV public access disabled + private endpoints3 private endpoints + 3 private DNS zones
FrameworkControl IDStatus
GDPRData residency + access controls
PCI-DSS v4Segmentation + encryption in transit
Azure PolicyRequired tags + SQL AAD-only auth

Open compliance risks:

  • ⚠️ Several policy tags (application, costcenter, backup-policy, maint-window, sla, workload) are present but empty values in deployed tags.
  • ❌ App Service ingress restrictions are currently allow-all (no WAF/IP restrictions configured).

Current protection posture:

  • SQL Database S0 with PITR (local backup redundancy)
  • Key Vault soft delete (90 days) and purge protection enabled
  • IaC reconstruction path available from infra/bicep/nordic-fresh-foods/

MVP DR design remains single-region with documented failover strategy to germanywestcentral as manual recovery pattern.


Monitoring stack:

  • Log Analytics workspace log-nordic-fresh-foods-prod (PerGB2018, 30-day retention, 2 GB/day cap)
  • Application Insights appi-nordic-fresh-foods-prod (workspace-based, 50% sampling)
  • Autoscale policy on App Service Plan
  • Resource group budget budget-nordic-fresh-foods-prod with actual+forecast notifications

  • Subscription: 00858ffc-dded-4f0f-8bbf-e17fff0d47d9
  • Resource group: rg-nordic-fresh-foods-prod
  • Region: swedencentral
  • App endpoint: https://app-nordic-fresh-foods-prod-7jrcjf.azurewebsites.net
  • SQL FQDN: sql-nordic-fresh-foods-prod.database.windows.net
  • Key Vault URI: https://kv-nff-prod-7jrcjfo3iqck.vault.azure.net/
  • Storage blob endpoint: https://stnffprod7jrcjfo3iqckk.blob.core.windows.net/
ArchitectureLink
Design-time architecture assessmentArchitecture Assessment
Deployment outcomesDeployment Summary

[!NOTE] 📚 The following Microsoft Learn resources provide additional guidance.

TopicLink
Well-Architected FrameworkOverview
Azure Architecture CenterArchitectures
Security Best PracticesSecurity Baseline
Networking Best PracticesNetwork Security
Backup Best PracticesAzure Backup
Monitoring OverviewAzure Monitor

Design document generated from deployed infrastructure artifacts.



Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Design DocumentDemo IndexResource Inventory

Version: 1.0 Date: 2026-03-11 Environment: prod Region: swedencentral


ItemValue
Primary Regionswedencentral
Resource Grouprg-nordic-fresh-foods-prod
Support Contacttechnical-contact tag: sam@altman.com
Escalation PathL1 On-call -> L2 Team Lead -> L3 Service Owner
ResourceNameResource GroupSeverity
App Serviceapp-nordic-fresh-foods-prod-7jrcjfrg-nordic-fresh-foods-prod🔴 P1
SQL Databasesqldb-freshconnect-prodrg-nordic-fresh-foods-prod🔴 P1
Key Vaultkv-nff-prod-7jrcjfo3iqckrg-nordic-fresh-foods-prod🔴 P1
Storage Accountstnffprod7jrcjfo3iqckkrg-nordic-fresh-foods-prod🟠 P2
Log Analyticslog-nordic-fresh-foods-prodrg-nordic-fresh-foods-prod🟢 P3

Morning Health Check:

  1. ✅ Verify App Service is Running and responding on default hostname.
  2. ✅ Verify SQL server state is Ready and database is Online.
  3. ✅ Verify Key Vault/Storage/SQL private endpoints remain Approved.

KQL Query - System Health Overview:

AppRequests
| where TimeGenerated > ago(1h)
| summarize Requests=count(), Failed=countif(Success == false), P95=percentile(DurationMs, 95)

Priority Logs to Review:

Log SourceQuery FocusAction Threshold
Application InsightsFailed requests, dependency failures>2% failures over 15 min
Log AnalyticsPlatform warnings/errorsAny Critical/Sev0 event
SQL diagnosticsConnection/auth anomaliesRepeated auth/network failures

SeverityDefinitionResponse Time
🔴 P1Customer-impacting outage or data-path failure15 minutes
🟠 P2Major feature degradation with workaround1 hour
🟢 P3Non-critical issue or maintenance defect1 business day
flowchart LR
    D["🔍 Detect"] --> T["🎯 Triage"]
    T --> E["⚠️ Escalate"]
    E --> R["🛠️ Resolve"]
    R --> P["📝 Postmortem"]
    style D fill:#D83B01,color:#fff
    style R fill:#107C10,color:#fff
AlertRunbookOwner
App service unavailableRestart app, inspect platform logs, validate VNet integrationApp operations
SQL connectivity failuresValidate PE/DNS, test SQL endpoint, review authData operations
Secret resolution failuresCheck MI role assignment and Key Vault endpoint/healthSecurity operations
Budget threshold breachReview cost drivers and scale settingsPlatform owner

Terminal window
az webapp restart \
--resource-group rg-nordic-fresh-foods-prod \
--name app-nordic-fresh-foods-prod-7jrcjf
Terminal window
# Manual override scale to 3 workers
az appservice plan update \
--resource-group rg-nordic-fresh-foods-prod \
--name asp-nordic-fresh-foods-prod \
--number-of-workers 3

TaskScheduleDuration
Platform patch + app updatesSunday 02:00-06:00 UTC2-4 hours
DR and restore validationQuarterly1 day
gantt
    title Maintenance Schedule
    dateFormat YYYY-MM-DD
    section Patching
        OS Patching       :a1, 2026-04-06, 1d
        App Updates       :a2, 2026-05-04, 1d
    section DR Testing
        Failover Test     :b1, 2026-06-15, 1d

[!TIP] 💡 Apply changes during low-order windows and preserve rollback plan for SQL schema or config updates.


RoleContactPhoneOn-Call Rotation
L1 On-call EngineerPlatform on-callN/AWeekly
L2 Team LeadEngineering leadN/AWeekly
L3 Service OwnerProduct/platform ownerN/AMonthly
flowchart LR
    L1["🟢 L1: On-Call Engineer"] --> L2["🟠 L2: Team Lead"]
    L2 --> L3["🔴 L3: Service Owner"]
    L3 --> MGMT["⚠️ Management"]

DateChangeAuthor
2026-03-11Initial as-built operations runbook created from deployed state08-As-Built agent

[!NOTE] 📚 The following Microsoft Learn resources provide operational guidance.

TopicLink
Azure Monitor AlertsAlerting Best Practices
Log Analytics QueriesKQL Reference
Incident ManagementAzure Status
Service HealthAzure Service Health

Operations runbook generated from infrastructure artifacts.



Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Resource InventoryDemo IndexCompliance Matrix

Generated: 2026-03-11 Version: 1.0 Environment: prod Primary Region: swedencentral Secondary Region: germanywestcentral (planned failover target)


[!IMPORTANT] This document defines the backup strategy and disaster recovery procedures for nordic-fresh-foods.

MetricCurrentTarget
RPOSQL: service-managed PITR window; app data: daily operational backup pattern12 hours
RTOManual failover + redeploy strategy24 hours
AvailabilitySingle-region with autoscale99.9%

TierRTO TargetServices
🔴 Critical4-8 hoursApp Service, SQL database, Key Vault
🟠 Important8-16 hoursStorage assets, DNS private resolution
🟢 Standard24 hoursMonitoring, non-critical integrations
Data TypeRPO TargetBackup Strategy
Transactional data (SQL)<= 12 hoursSQL automated backups + PITR
Blob assets<= 24 hoursExport/snapshot operational process
Secrets/config<= 24 hoursKey Vault recoverable soft-delete + IaC rehydration
gantt
    title RPO / RTO Targets by Tier
    dateFormat HH:mm
    axisFormat %H:%M
    section Critical
        RPO :crit, rpo1, 00:00, 12h
        RTO :crit, rto1, 00:00, 8h
    section Important
        RPO :rpo2, 00:00, 24h
        RTO :rto2, 00:00, 16h
    section Standard
        RPO :rpo3, 00:00, 24h
        RTO :rto3, 00:00, 24h

SettingConfiguration
Backup TypePlatform-managed automated backups
Retention (PITR)Service default for S0 tier
Long-Term RetentionNot configured in current deployment
Geo-RedundancyNot enabled (local backup redundancy)

Point-in-Time Restore Command:

Terminal window
az sql db restore \
--resource-group rg-nordic-fresh-foods-prod \
--server sql-nordic-fresh-foods-prod \
--name sqldb-freshconnect-prod \
--dest-name sqldb-freshconnect-prod-restored \
--time "2026-03-11T17:00:00Z"
SettingConfiguration
Soft DeleteEnabled
Purge ProtectionEnabled

  1. Confirm incident severity and regional impact in Azure Service Health.
  2. Restore SQL database to failover region (manual geo-restore or latest available backup path).
  3. Re-deploy stack from infra/bicep/nordic-fresh-foods/ with failover region parameters.
  4. Rehydrate Key Vault secrets and validate managed identity permissions.
  5. Update DNS/app endpoint routing to failover deployment.
  6. Execute smoke tests and release service.
  1. Validate primary region recovery.
  2. Synchronize latest data back to primary environment.
  3. Re-deploy primary resources from IaC.
  4. Switch traffic back during approved maintenance window.
  5. Run post-failback validation and close incident.

Test TypeFrequencyLast TestNext Test
SQL PITR restore testQuarterlyNot recorded2026-Q2
Private endpoint + DNS validationQuarterlyNot recorded2026-Q2
Full tabletop DR exerciseSemi-annualNot recorded2026-Q3
gantt
    title DR Testing Schedule
    dateFormat YYYY-MM-DD
    section Backup Validation
        SQL restore validation  :a1, 2026-04-15, 1d
    section Failover
        Region failover drill   :b1, 2026-06-15, 1d
    section Full DR
        Full DR exercise        :c1, 2026-09-15, 2d

AudienceChannelTemplate
Engineering on-callTeams + PagerP1/P2 incident template
Product stakeholdersTeams + EmailService disruption notice
Compliance contactsEmailSecurity/compliance incident template

RoleTeamResponsibility
Incident CommanderSRE leadOwns incident bridge, decisions, and communications
Database Recovery LeadData platformExecutes SQL restore/failover tasks
Application Recovery LeadApp engineeringRe-deploys and validates application tier
Security LeadSecurity/complianceVerifies IAM, key access, and audit integrity

DependencyImpactMitigation
Azure SQL restore availabilityCritical path for transactional recoveryPre-tested restore runbooks and periodic drills
Private DNS resolutionApp-to-data connectivityValidate DNS links in every DR test
External payment/maps/email APIsFunctional degradation if unavailableCircuit breaker + degraded mode behavior

ScenarioRunbookOwner
SQL data corruptionSQL PITR and app rebindDatabase Recovery Lead
Region outageSecondary region redeploy + traffic switchIncident Commander
Secret compromiseKey rotation + app restart + auditSecurity Lead

Trigger: Data corruption or accidental destructive write. Estimated Duration: 1-3 hours.

  1. Identify last known good restore point.
  2. Run az sql db restore to a new database name.
  3. Validate schema/data and update application connection reference.
  4. Restart app and run transactional smoke tests.

Validation:

Terminal window
az sql db show \
--resource-group rg-nordic-fresh-foods-prod \
--server sql-nordic-fresh-foods-prod \
--name sqldb-freshconnect-prod

  • App hostname: app-nordic-fresh-foods-prod-7jrcjf.azurewebsites.net
  • SQL FQDN: sql-nordic-fresh-foods-prod.database.windows.net
  • Key Vault URI: https://kv-nff-prod-7jrcjfo3iqck.vault.azure.net/
  • Storage endpoint: https://stnffprod7jrcjfo3iqckk.blob.core.windows.net/

[!NOTE] 📚 The following Microsoft Learn resources provide DR guidance.

TopicLink
Azure Backup OverviewBackup Overview
Backup Best PracticesBest Practices
RTO/RPO GuidanceReliability Metrics
Site RecoveryASR Overview
Business ContinuityDR Planning

Backup and DR plan generated from infrastructure artifacts.



Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Backup & DR PlanDemo IndexCost Estimate

Generated: 2026-03-11 Version: 1.0 Environment: prod Primary Compliance Framework: GDPR + PCI-DSS v4 + Azure Policy baseline


[!IMPORTANT] This compliance matrix maps the nordic-fresh-foods security controls to GDPR and PCI-DSS-aligned requirements.

Compliance AreaCoverageStatus
Network Security88%⚠️
Data Protection94%
Access Control90%
Monitoring & Audit82%⚠️
Incident Response78%⚠️
Overall86%⚠️

Requirement 1: Data protection and secure transport

Section titled “Requirement 1: Data protection and secure transport”
ControlRequirementImplementationStatus
TLS enforcementEncrypt data in transitSQL min TLS 1.2, Storage TLS1_2, App Service TLS 1.2
Public exposure minimizationRestrict direct data service accessSQL/Storage/KV publicNetworkAccess: Disabled, private endpoints configured
Secret handlingCentralized secret management and no hardcoded keysKey Vault Premium + App Service managed identity + KV RBAC role assignment

Evidence Location: Azure CLI evidence captured during Step 7 generation.

Evidence ItemTypeDate Collected
az sql server show outputCLI JSON2026-03-11
az storage account show outputCLI JSON2026-03-11
az keyvault show outputCLI JSON2026-03-11

Requirement 2: Identity and least privilege

Section titled “Requirement 2: Identity and least privilege”
ControlRequirementImplementationStatus
SQL AAD-only authNo SQL local auth for adminazureAdOnlyAuthentication: true on SQL server
Workload identityService-to-service auth without shared secretsApp Service system-assigned managed identity
Key Vault data-plane roleLeast privilege secret accessKey Vault Secrets User scoped to vault

Evidence Location: Azure RBAC and SQL server properties.

Evidence ItemTypeDate Collected
az role assignment list --scope <kv-id>CLI JSON2026-03-11
SQL administrators blockCLI JSON2026-03-11

Requirement 3: Governance and policy compliance

Section titled “Requirement 3: Governance and policy compliance”
ControlRequirementImplementationStatus
Mandatory tagsPolicy-required tags populatedRequired keys present but several values are empty⚠️
Budget controlsCost governance and notificationsRG monthly budget with actual/forecast thresholds
Monitoring baselineCentralized logs and telemetryLog Analytics + Application Insights

Evidence Location: Resource tags, budget resource, monitoring resources.

Evidence ItemTypeDate Collected
az resource list tags snapshotCLI JSON2026-03-11
az consumption budget list --resource-groupCLI JSON2026-03-11
Workspace/component show outputsCLI JSON2026-03-11

GapSeverityRisk LevelRemediationTimeline
Empty policy tag values (application, costcenter, sla, backup-policy, maint-window, workload)🟠MediumUpdate Bicep parameters and redeploy tags2 weeks
App Service ingress and SCM rules allow all (Allow all)🟠MediumAdd IP restrictions/WAF/Front Door controls4 weeks
Log Analytics public query/ingestion still enabled🟡MediumEvaluate Private Link and disable public access as feasible4-6 weeks
DR test evidence not yet recorded🟡LowExecute and capture quarterly restore/failover drills1 quarter
App Service lacks WAF/Front Door protection🟠High❌ Deploy WAF or Front Door before production trafficPre-prod

Compliance Gaps by Severity


ControlEvidence TypeLocationLast Collected
SQL AAD-only authCLI outputStep 7 command capture2026-03-11
Storage hardened configCLI outputStep 7 command capture2026-03-11
Key Vault security baselineCLI outputStep 7 command capture2026-03-11
Autoscale and budget controlsCLI outputStep 7 command capture2026-03-11
Private networking controlsCLI outputStep 7 command capture2026-03-11

DateAuditorFindingStatusCommit
2026-03-1108-As-Built agentAs-built compliance evidence consolidatedCompleteN/A
2026-03-11Deploy workflowPhase 4 SQL configuration mismatch fixed (zoneRedundant: false)CompleteN/A

FindingOwnerDue DateStatus
Populate all policy-required tag valuesPlatform engineering2026-03-25⬜ Todo
Lock down App Service ingress/SCM rulesSecurity engineering2026-04-08⬜ Todo
Assess and harden Log Analytics public accessOperations2026-04-15⬜ Todo
Run and record DR drillsSRE lead2026-06-30⬜ Todo

  • GDPR (EU data residency and data protection controls)
  • PCI-DSS v4 (segmentation, encryption, access management)
  • Azure Policy governance constraints from 04-governance-constraints.md
  • HTTPS-only and TLS 1.2 controls applied on web/data services
  • Data services isolated via private endpoints and public network disablement
  • Managed identity used for workload-to-secret access
  • Centralized monitoring via Log Analytics + App Insights

flowchart LR
    A["Control"] --> B{"Implemented?"}
    B -- Yes --> C{"Evidence Collected?"}
    B -- No --> D["❌ Gap"]
    C -- Yes --> E["✅ Compliant"]
    C -- No --> F["⚠️ Pending Evidence"]
    D --> G["Remediation Tracker"]
    style E fill:#107C10,color:#fff
    style D fill:#D83B01,color:#fff
    style F fill:#FFB900,color:#000

[!NOTE] 📚 The following Microsoft Learn resources provide compliance guidance.

TopicLink
Microsoft Cloud Security BenchmarkMCSB Overview
Azure Compliance OfferingsCompliance
Azure PolicyPolicy Overview
Regulatory ComplianceBuilt-in Policies

Compliance matrix generated from infrastructure artifacts.



Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Operations RunbookDemo IndexBackup & DR Plan

Generated: 2026-03-11 Source: Azure deployed state + Bicep artifacts Environment: prod Region: swedencentral


CategoryCount
Total Resources24
💻 Compute3
💾 Data Services6
🌐 Networking13
📨 Messaging0
🔐 Security1
📊 Monitoring2

[!NOTE] Resource count includes governance/ops resources (budget and autoscale), private networking artifacts (private endpoints + NICs + private DNS zones), and SQL master system database.


NameTypeSKULocationMonthly CostPurposePortal
asp-nordic-fresh-foods-prodMicrosoft.Web/serverFarmsS1 (capacity 2)swedencentral$146.00Linux App Service Plan for web/API workloadView
app-nordic-fresh-foods-prod-7jrcjfMicrosoft.Web/sitesStandard (on S1 plan)swedencentral$0.00 (plan-backed)FreshConnect application endpointView
autoscale-asp-nordic-fresh-foods-prodMicrosoft.Insights/autoscalesettingsN/Aswedencentral$0.00Autoscale policy for App Service Plan (min 2, max 3)View
NameTypeSKUConfigurationLocationMonthly Cost
sql-nordic-fresh-foods-prodMicrosoft.Sql/serversv12.0Azure AD-only auth, public network disabled, TLS 1.2swedencentral$0.00
sqldb-freshconnect-prodMicrosoft.Sql/servers/databasesS0 (Standard, 10 DTU)Max size 250 GB, zoneRedundant false, status Onlineswedencentral$14.71
masterMicrosoft.Sql/servers/databasesSystemSystem databaseswedencentralIncluded
stnffprod7jrcjfo3iqckkMicrosoft.Storage/storageAccountsStandard_LRSHTTPS-only, public network disabled, no shared key auth, no public blob accessswedencentral$1.86 (assumed 50 GB hot + txns)
assetsBlob containerN/ADocumented in deployment summary; data-plane read blocked by network rulesswedencentralIncluded
product-imagesBlob containerN/ADocumented in deployment summary; data-plane read blocked by network rulesswedencentralIncluded
NameTypeConfigurationLocation
vnet-nordic-fresh-foods-prodMicrosoft.Network/virtualNetworks10.0.0.0/16 with snet-app (10.0.1.0/24), snet-data (10.0.2.0/24), snet-pe (10.0.3.0/24)swedencentral
nsg-nordic-fresh-foods-app-prodMicrosoft.Network/networkSecurityGroupsNSG bound to snet-appswedencentral
nsg-nordic-fresh-foods-data-prodMicrosoft.Network/networkSecurityGroupsNSG bound to snet-dataswedencentral
nsg-nordic-fresh-foods-pe-prodMicrosoft.Network/networkSecurityGroupsNSG bound to snet-peswedencentral
pep-sql-nordic-fresh-foods-prod-sqlServer-0Microsoft.Network/privateEndpointsSQL private endpointswedencentral
pep-stnffprod7jrcjfo3iqckk-blob-0Microsoft.Network/privateEndpointsBlob private endpointswedencentral
pep-kv-nff-prod-7jrcjfo3iqck-vault-0Microsoft.Network/privateEndpointsKey Vault private endpointswedencentral
pep-sql-…nic…Microsoft.Network/networkInterfacesNIC for SQL PEswedencentral
pep-st…nic…Microsoft.Network/networkInterfacesNIC for Blob PEswedencentral
pep-kv-…nic…Microsoft.Network/networkInterfacesNIC for KV PEswedencentral
privatelink.database.windows.netMicrosoft.Network/privateDnsZonesSQL private DNS zone with VNet linkglobal
privatelink.blob.core.windows.netMicrosoft.Network/privateDnsZonesBlob private DNS zone with VNet linkglobal
privatelink.vaultcore.azure.netMicrosoft.Network/privateDnsZonesKey Vault private DNS zone with VNet linkglobal
NameTypeSKUConfigurationLocation
NoneN/AN/AMessaging services were not deployed in this workloadN/A
NameTypeConfigurationLocation
kv-nff-prod-7jrcjfo3iqckMicrosoft.KeyVault/vaultsPremium, RBAC enabled, soft delete 90 days, purge protection enabled, public network disabledswedencentral
NameTypeRetentionLocation
log-nordic-fresh-foods-prodMicrosoft.OperationalInsights/workspaces30 daysswedencentral
appi-nordic-fresh-foods-prodMicrosoft.Insights/components365 daysswedencentral
NameTypeConfigurationLocation
budget-nordic-fresh-foods-prodMicrosoft.Consumption/budgetsUSD 800 monthly budget, actual 90% + forecast 80/100/120% notificationsrg scope

pie showData
    title Resource Distribution by Category
    "💻 Compute" : 3
    "💾 Data" : 6
    "🌐 Networking" : 13
    "📨 Messaging" : 0
    "🔐 Security" : 1
    "📊 Monitoring" : 2

TopicLink
Azure Resource TypesResource Providers
Naming ConventionsCAF Naming
Pricing CalculatorAzure Pricing

Resource inventory generated from deployed resources and Bicep templates.



Generated by 08-As-Built agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Compliance MatrixDemo Index

Generated: 2026-03-11 Source: Deployed resources + cost-estimate-subagent MCP pricing response Region: swedencentral Environment: Production MCP Tools Used: azure_bulk_estimate, azure_cost_estimate, azure_price_search, azure_sku_discovery (via subagent) IaC Reference: Bicep templates repository folder

Monthly Total: $363.77 | Annual: $4,365.24

Budget: $800/month (resource-group budget) | Utilization: 45.47% ($363.77 of $800)
StatusIndicator
Cost Trend➡️ Stable (monitoring-heavy profile)
Savings Available💰 Potential with monitoring ingestion tuning
Compliance✅ GDPR and PCI-DSS aligned controls deployed
  • ✅ Implemented: App Service S1 (2 instances), SQL S0, private endpoints (3), Key Vault Premium, Storage LRS, monitoring stack, budget alerts.
  • ⏳ Deferred: WAF/Application Gateway, DDoS Standard, multi-region active-passive architecture.
  • 🔁 Redesign Trigger: Sustained 3-instance runtime plus high telemetry ingestion pushes total toward budget threshold.

Confidence: Medium | Expected Variance: +/-20% (telemetry ingestion and unresolved PE meter are primary variables)

MetricDesign EstimateAs-BuiltVarianceStatus
Monthly Estimate$203.97$363.77+$159.80⚠️
Annual Estimate$2,447.64$4,365.24+$1,917.60⚠️

Design vs As-Built Cost Comparison

RequirementArchitecture DecisionCost ImpactMandatory
SLA 99.9%S1 App Service with min 2 instances+$146.00/monthYes
GDPR/PCI network isolation3 Private Endpoints + 3 Private DNS zones+$1.50/month in current priced output (PE unresolved)Yes
Relational transaction storeSQL S0 single database+$14.71/monthYes
Observability baselineLog Analytics + App Insights+$194.40/monthYes
RankResourceMonthly Cost% of TotalTrendOptimization
1️⃣Log Analytics ingestion$179.4049.32%⬆️Reduce ingestion volume and noisy logs
2️⃣App Service Plan S1 x2$146.0040.13%➡️Validate sustained capacity requirement
3️⃣Application Insights$15.004.12%➡️Sampling/retention tuning
4️⃣SQL Database S0$14.714.04%➡️Keep S0 until sustained pressure
5️⃣Key Vault Premium$5.301.46%➡️Right-size ops and vault SKU if allowable

💡 Quick Win: Prioritize telemetry filtering and ingestion caps; this has the largest single cost-reduction potential.

AspectDetail
Current InputsLog Analytics estimated at 2 GB/day and App Insights workspace-based
Monthly Cost$194.40
OptimizationRefine data collection and reduce high-cardinality telemetry
Potential SavingsSignificant, workload-dependent
CategoryMonthly Cost (USD)Share
💻 Compute146.0040.13%
💾 Data Services16.574.56%
🌐 Networking1.500.41%
🔐 Security5.301.46%
📊 Monitoring194.4053.45%
Other0.000.00%

Monthly Cost Distribution

6-Month Cost Projection

DecisionCost ImpactBusiness RationaleStatus
Min 2 App Service instances+$146.00/monthAvailability and peak readinessRequired
Telemetry cap + workspace monitor+$194.40/month in current estimateOperational visibilityRequired
SQL S0 baseline+$14.71/monthMVP transactional requirementsRequired
  • Azure WAF/Application Gateway v2
  • Azure DDoS Protection Standard
  • Multi-region active-passive duplicate stack
  • Redis cache tier
ResourceRisk LevelIssueMitigation
Log Analytics🔴 HighIngestion estimate dominates monthly spendReduce ingestion and tune diagnostic categories
Private Endpoints🟡 MediumRegion meter unresolved in pricing toolRe-check meter mapping in next cost cycle
App Service Plan🟡 MediumScale-to-3 scenarios increase compute by $73.00Track autoscale events and seasonal run rate

⚠️ Watch Item: Monitoring assumptions currently drive the delta versus design estimate.

“If you need X, expect to pay Y more”

RequirementAdditional CostSKU ChangeVerdictNotes
Seasonal scale-to-3+$73.00/monthS1 instances 2 -> 3🟢 GoIncluded in autoscale profile
Full WAF tierNot in current as-builtAdd App Gateway WAF_v2🟡 MonitorEvaluate post-MVP
Multi-region DRNot in current as-builtDuplicate stack in failover region❌ Budget impact materialEvaluate post-MVP

Total Potential Savings: Variable (telemetry and retention tuning dependent)

Section titled “Total Potential Savings: Variable (telemetry and retention tuning dependent)”
StrategyCommitmentMonthly SavingsAnnual Savings% Reduction
Log filtering + category tuningN/AVariableVariableVariable
App Insights ingestion tuningN/AVariableVariableVariable
Planned peak-window scaling onlyN/AUp to $73 in non-peak periodsUp to $87620.07%
SignalValueStatus
Templates scanned9 Bicep files
Resources detected24 as-built resources
Resources priced10 primary billable meters
Unpriced resourcesPrivate Endpoint meter unresolved in tool output⚠️
CategoryServiceSKU / MeterQuantity / UnitsEst. Monthly
💻 ComputeApp Service PlanS1 Linux2 instances x 730h$146.00
💻 ComputeApp Service SitePlan-backed1$0.00
💾 Data ServicesAzure SQL DBS01 database$14.71
💾 Data ServicesStorage (Hot LRS + txns)Blob + transactions50 GB + 100K txns$1.86
🔐 SecurityKey Vault PremiumBase + ops1 vault + 100K ops$5.30
🌐 NetworkingPrivate DNS ZonesPrivate DNS3 zones$1.50
🌐 NetworkingPrivate EndpointsPE meter3 endpoints$0.00 (unresolved)
📊 MonitoringLog AnalyticsAnalytics Logs2 GB/day (~60 GB/mo)$179.40
📊 MonitoringApplication InsightsEnterprise meter1 component$15.00
OtherBudget, NSGs, VNet, NICs, autoscaleN/AN/A$0.00
  • All dollar figures above are from cost-estimate-subagent output and were not manually adjusted.
  • The Private Endpoint meter did not resolve for swedencentral in the subagent output.
  • Design estimate from Step 3 used lower monitoring assumptions, causing the main variance.

TopicLink
Azure Pricing CalculatorCalculator
Cost ManagementOverview
Reserved InstancesReservations
WAF Cost OptimizationChecklist

⬅️ Compliance Matrix🏠 Demo Index➡️ —