Skip to content

Step 3 — Design Artifacts

Architecture Diagram

Source: Excalidraw source file

Cost Distribution

Cost Projection

Generated by design agent | 2026-03-11

Status: Proposed Date: 2026-03-11 Deciders: CTO, Platform Engineering Lead, Security Lead

The architecture assessment for nordic-fresh-foods recommends an MVP platform that must satisfy:

  • GDPR and PCI-DSS obligations
  • EU data residency (primary region swedencentral)
  • 99.9% service availability target with RTO 24h and RPO 12h
  • A hard cost cap below €1,000/month
  • Seasonal 3x traffic growth with minimal operational overhead

The primary trade-off is whether to optimize for early-stage cost and simplicity now, with a clear hardening path later, or to front-load enterprise-grade resilience and complexity in the MVP.

Adopt a cost-optimized N-tier Azure architecture for the MVP, using managed PaaS services with private data access:

  • Compute: Azure App Service (Linux S1) with production minimum 2 instances and autoscale to 3
  • Data: Azure SQL Database (S0 DTU model) for transactional workloads
  • Security and secrets: Key Vault with RBAC and Managed Identity
  • Storage: Standard LRS Storage Account for product images and static assets
  • Network isolation: VNet integration + Private Endpoints for SQL and Storage
  • Observability: Application Insights + Log Analytics
  • Identity: Microsoft Entra External ID for consumer and restaurant access

This decision is for Step 3 design intent and will be validated against governance constraints in Step 4 before implementation.

OptionProsConsWAF Impact
AKS microservices baselineMaximum flexibility and fine-grained scalingHigher ops overhead and significantly higher MVP costReliability +, Operations -, Cost —
Azure Container Apps + PostgreSQL Flexible ServerBetter burst scaling and modern runtime modelMore moving parts and platform complexity for small teamPerformance +, Operations -, Cost -
Azure Functions + Cosmos DB event-driven modelConsumption-based scaling and rapid feature experimentationArchitectural refactor of transactional order model and consistency complexityCost +, Reliability ->, Operations -
Selected: App Service + Azure SQL N-tierLowest complexity with predictable cost and compliance controlsSingle-region MVP posture and deferred WAF/DDoS hardeningCost ++, Security +, Reliability -
  • Keeps projected steady-state spend around ~$204/month, preserving substantial budget headroom
  • Delivers a straightforward implementation path using AVM-capable services and standard tooling
  • Supports GDPR and PCI-DSS controls through private data access, tokenized payments, and MI-based auth
  • Reduces day-1 operational burden for a small team while retaining scale-up options
  • Accepts single-region risk in MVP and requires explicit DR drill execution to maintain confidence
  • Defers WAF and advanced DDoS posture to a later hardening phase
  • Places pressure on disciplined observability and scaling thresholds to avoid performance regressions
  • Uses DTU-based SQL sizing now, with a planned review gate for vCore or tier upgrade if usage rises
  • Keeps LRS storage for MVP economics, with a pre-defined switch path to GRS when recovery goals tighten
PillarImpactNotes
SecurityPositivePrivate Endpoints, Managed Identity, Key Vault RBAC, and TLS 1.2 baseline are built into the design.
ReliabilityMixedMin 2 App Service instances improves availability, but multi-region failover remains deferred.
PerformanceMixedMeets current SLA targets; sustained seasonal peaks require pre-peak load validation and autoscale tuning.
Cost OptimizationStrong PositiveRight-sized SKUs and pay-per-use monitoring keep spend far below budget ceiling.
Operational ExcellencePositiveBicep-first IaC and Azure-native telemetry improve repeatability and incident visibility.
  • GDPR: All core data services remain in EU region boundaries; external processors require DPA/SCC validation.
  • PCI-DSS: Cardholder data is excluded from App Service scope via hosted payment fields or redirect tokenization.
  • Identity governance: Entra External ID is scoped to consumer identities; workforce access remains in org tenant.
  • Security controls: publicNetworkAccess remains disabled on SQL and Storage in production.
  • Enforce policy-aligned configuration in Step 4/5 artifacts, especially network isolation and TLS settings.
  • Implement resilience patterns for external integrations: timeout, bounded retries with jitter, circuit breaker.
  • Define production reliability review gates tied to uptime incidents and load-test outcomes.
  • Revisit this ADR when either condition is met:
    • sustained usage >80% SQL DTU for 14 days, or
    • monthly availability drops below 99.9%

Generated by architect agent | 2026-03-11

⬅️ Previous📑 IndexNext ➡️
Architecture AssessmentDemo IndexGovernance Constraints

Generated: 2026-03-11 Region: swedencentral Environment: Production + Development MCP Tools Used: azure_bulk_estimate, azure_cost_estimate, azure_price_search Architecture Reference: Architecture Assessment

Monthly Total: ~$204 | Annual: ~$2,448

Budget: €1,000/month (hard) | Utilization: 20% ($204 of ~$1,000)
StatusIndicator
Cost Trend➡️ Stable (growth driven by user acquisition)
Savings Available💰 ~$180/year with Dev/Test licensing
Compliance✅ GDPR + PCI-DSS aligned
  • ✅ Approved: N-Tier Web (App Service S1 ×2 instances + SQL S0 + KV + Storage + App Insights) with Private Endpoints for Prod; B1 + Basic for Dev
  • ⏳ Deferred: Redis Cache, CDN/Front Door, WAF/Application Gateway, DDoS Standard, multi-region failover
  • 🔁 Redesign Trigger: If concurrent users exceed 500 or SQL DTU sustained >80%, upgrade compute/database tier

Confidence: Medium | Expected Variance: ±15% (Log Analytics ingestion and autoscale frequency are primary unknowns)

RequirementArchitecture DecisionCost ImpactMandatory
SLA 99.9% / RTO 24h / RPO 12hSingle region, App Service S1, SQL PITRBaseline (no uplift)Yes
GDPR data residencyswedencentral region, EU-only processing$0 (region choice)Yes
PCI-DSS (tokens only)Private Endpoints for SQL + Storage+$15.60/monthYes
3× seasonal autoscaleApp Service autoscale 2→3 instances+$73/month at peakYes
<100 concurrent usersS1 plan + SQL S0 (10 DTU)Baseline sizingYes
Consumer identityEntra External ID (free tier)$0 (within 50K MAU)Yes
Monitoring + alertingApp Insights + Log Analytics (pay/GB)+$4.60/monthYes
RankResourceMonthly Cost% of TotalTrendOptimization
1️⃣App Service Plan S1 (Prod)$146.0072%⬆️Min 2 for availability; scale to 3
2️⃣Azure SQL Database S0$14.737%➡️Monitor DTU; stay on S0 if <80%
3️⃣Private Endpoints ×2$14.607%➡️Fixed cost; required for compliance
4️⃣App Service Plan B1 (Dev)$13.146%➡️Stop/deallocate when not in use
5️⃣Azure SQL Database Basic$4.902%➡️Dev only; pause outside work hours

💡 Quick Win: Stop the Dev App Service Plan outside business hours to save $9/month ($108/year).

AspectDetail
Current SKUS1 (Linux)
Monthly Cost$146.00 (2 instances × $73.00)
Cost BreakdownCompute: $73.00/instance (flat rate per instance)
OptimizationMin 2 for availability; cannot reduce below 2
Potential Savings~$15/month with 1-year RI (if available)
AspectDetail
Current SKUS0 (10 DTU)
Monthly Cost$14.73
OptimizationStay on S0 while DTU <80%
Potential Savings$0 (already minimum viable tier)
CategoryMonthly Cost (USD)Share
💻 Compute$159.1478%
💾 Data Services$21.8811%
🌐 Networking$15.608%
📊 Observability$4.602%
🔑 Security$0.000%
📦 Storage$2.751%

Monthly Cost Distribution

6-Month Cost Projection

DecisionCost ImpactBusiness RationaleStatus
S1 over B1 (Prod)+$132.86/month 📈Autoscale + min 2 instances for availabilityRequired
Private Endpoints (×2)+$15.60/month 📈GDPR + PCI-DSS compliance mandatesRequired
S0 over Basic (Prod SQL)+$9.83/month 📈10 DTU needed for concurrent order processingRequired
Pay-per-GB monitoringCost-effective 📉Low ingestion volumes (<5 GB/month total)Required
Single region-$100+/month 📉No failover region cost; acceptable for MVPOptional
  • Azure Front Door / CDN — Add when page load exceeds 3s target ($35-50/month)
  • Redis Cache (Basic C0) — Add if inventory API latency exceeds 500ms (~$15/month)
  • WAF v2 / Application Gateway — Add at >5K concurrent users (~$250/month)
  • DDoS Protection Standard — Add if targeted attacks detected (~$2,944/month)
  • Multi-region active-passive — Add if 24h RTO becomes unacceptable (doubles infrastructure cost)
  • Microsoft Defender for Cloud — Recommended post-MVP (~$15/resource/month)
  • Azure Front Door Premium — For Private Link origins and advanced WAF rules
  • Log Analytics ingestion stays within 5 GB/month free tier (monitor after launch)
  • Autoscale triggers infrequently outside peak season (June-August, December)
  • Storage growth averages 5 GB/month for first 6 months
  • Entra External ID stays within 50K MAU free tier for 12+ months
  • No cross-region data transfer costs (single region)
ResourceRisk LevelIssueMitigation
App Service S1 (×3)🟡 MediumScaling to 3rd instance at peak adds $73/moSet max instances to 3; monitor closely
Log Analytics🟡 MediumIngestion may exceed 5 GB free tierConfigure sampling rate; exclude verbose
SQL Database S0🟢 LowDTU exhaustion during peaksAlert at 80% DTU; upgrade to S1 ($30/mo)
Storage transactions🟢 LowHigh transaction volume from imagesEnable CDN if transaction costs spike

⚠️ Watch Item: Peak-season autoscale (June-August) could maintain 3 instances for extended periods, pushing monthly cost to $277-308. Set autoscale cool-down to 10 minutes to avoid unnecessary scale-out.

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

RequirementAdditional CostSKU ChangeVerdictNotes
99.99% SLA+$65/monthP1v3 + Zone-redundant🟡 MonitorWait until user base justifies
Redis Cache (hot inventory)+$15/monthC0 Basic🟢 GoAdd when inventory API >500ms p95
CDN for static assets+$35/monthStandard profile🟢 GoAdd when page load >3s target
WAF + Application Gateway+$250/monthWAF_v2🔴 DeferOver budget for MVP; add post-launch
Multi-region failover+$130/monthDuplicate stack🔴 DeferRTO 24h acceptable for MVP
SQL S1 (20 DTU)+$15/monthS1🟡 MonitorTrigger: sustained DTU >80%
StrategyCommitmentMonthly SavingsAnnual Savings% Reduction
Dev/Test pricingN/A$15$18011%
Stop Dev outside hoursN/A$9$1087%
Reserved Instances (RI)1-yearNot recommended
Spot InstancesN/ANot applicable

Note: RIs not recommended for a 3-month-old startup with uncertain growth trajectory. Re-evaluate after 6 months of stable usage.

  • Hours: 730 hours/month
  • Network egress: Minimal (<1 GB/month within region)
  • Storage growth: 5 GB/month for first 6 months
  • Log ingestion: 2 GB App Insights + 3 GB Log Analytics = 5 GB total
CategoryServiceSKU / MeterQuantity / UnitsEst. Monthly
💻 Compute (Prod)App Service PlanS1 Linux2 instances$146.00
💻 Compute (Dev)App Service PlanB1 Linux1 instance$13.14
💾 Data (Prod)Azure SQL DatabaseS0 (10 DTU)1 database$14.73
💾 Data (Dev)Azure SQL DatabaseBasic (5 DTU)1 database$4.90
📦 Storage (Prod)Storage AccountStandard LRS50 GB$2.25
📦 Storage (Dev)Storage AccountStandard LRS10 GB$0.45
🔑 SecurityKey Vault (Prod)Standard~1K ops$0.00
🔑 SecurityKey Vault (Dev)StandardMinimal ops$0.00
📊 ObservabilityApplication InsightsPay-per-GB2 GB$4.60
📊 ObservabilityLog AnalyticsPay-per-GB3 GB (free tier)$0.00
📊 ObservabilityApp Insights (Dev)Pay-per-GB1 GB$2.30
🌐 NetworkingPrivate EndpointSQL730 hours$7.30
🌐 NetworkingPrivate EndpointStorage730 hours$7.30
🌐 NetworkingPrivate DNS ZoneSQL privatelink1 zone$0.50
🌐 NetworkingPrivate DNS ZoneStorage privatelink1 zone$0.50
🆔 IdentityEntra External IDFree tier~10.5K MAU$0.00
Total$203.97
ChangeSteady-StatePeak (3×)Delta
App Service Plan (Prod)$146.00$219.00+$73.00
All other resources$57.97$57.97$0.00
Compute Total$203.97$276.97+$73.00

Variable Meter Sensitivity (Peak Season):

Meterp50 Scenariop90 ScenarioNotes
SQL DTU bursting$0.00$15.00Upgrade to S1 if sustained >80% DTU
Log Analytics ingestion$0.00$5.00Free tier (5 GB) may be exceeded at peak
App Insights extra ingestion+$2.30+$6.901-3 GB extra at 3× traffic
Storage transactions$0.50$3.00Image serving transaction volume increase
Network egress (inter-zone)$0.00$1.00Minimal; single-region
Variable Total$2.80$30.90
Grand Peak Total (p50/p90)$279.77$307.87Compute + variable meters

[!NOTE] Peak assumes full-month autoscale to 3 instances. Actual peak months (June-August, December) will vary based on scale-out duration. Variable meters represent additional consumption-based costs beyond fixed compute.

ServiceFree Tier LimitCurrent UsageCliff CostTrigger
Log Analytics5 GB/month~3 GB+$2.76/GBVerbose logging at peak
Entra External ID50K MAU~10.5K MAU$0.0025/authUnlikely within 12 months
Key Vault10K ops free~1K ops$0.03/10K opsVery unlikely
  • App Service Plan S1 is not eligible for Reserved Instances; RI applies to P-series and above
  • Dev/Test pricing via Visual Studio subscription can reduce App Service and SQL costs
  • Entra External ID free tier covers first 50K MAU — no cost until user base exceeds this threshold
  • Azure SQL geo-backup is included at no additional cost with S0 tier
  • Private DNS Zone billing: $0.50/zone/month + $0.0004/million queries (negligible)

TopicLink
Azure Pricing CalculatorCalculator
Cost ManagementOverview
Reserved InstancesReservations
WAF Cost OptimizationChecklist
App Service PricingPricing
SQL Database PricingPricing