AMportfolio@v3.0.0
๐Ÿ‘‹ Ask me anything!
All Case Studies
Architecture ยท Networking ยท Security

Azure Three-Tier Application Architecture

Production-Grade Secure Web App

RG: rg-multitier-autoscale-devRegion: Mexico CentralApp Gateway: agw-multitier-dev (Standard V2)Zones: 1 / 2 / 3Min Instances: 2Max Instances: 10

Overview

Designed and deployed a production-style three-tier web application on Azure โ€” React frontend, Node.js/Express backend, Azure SQL database. All inbound traffic routes through Azure Application Gateway with path-based routing. Network Security Groups enforce least-privilege access. No direct internet exposure to backend or database at any point.

Architecture Flow

๐ŸŒ
User / Internet
โšก
Application Gateway v2
agw-multitier-dev ยท path-based routing
โš›
/ โ†’ Frontend App Service
React SPA
๐Ÿ”ง
/api/* โ†’ Backend App Service
Node.js / Express
๐Ÿ—„
Azure SQL Database
Port 1433 ยท backend-only access

NSG Rules

RuleDirectionSourcePortPurpose
Allow-HTTPInboundInternet80Public web access
Allow-HTTPSInboundInternet443Secure access
Allow-BackendInboundApp GW443API communication
Allow-SQLOutboundBackend1433DB connectivity
Deny-AllInboundAnyAnyDefault protection

Auto-scaling Configuration

โ€บScale out: CPU > 70% for 5 min โ†’ add instances
โ€บScale in: CPU < 30% for 10 min โ†’ remove instances
โ€บMin: 2
โ€บMax: 10

Real Problem Solved

Challenge Solved

Fixed backend health probe failures by implementing a dedicated /api/health endpoint returning 200 OK โ€” resolved the missing health check that caused App Gateway to mark the backend pool as unhealthy.

Key Outcomes

โœ“Zero direct DB exposure โ€” backend-only SQL access
โœ“Auto-scaling: 2โ€“10 instances, CPU threshold 70%
โœ“2/2 backend health probes returning 200 OK

Tech Stack

ReactNode.jsExpressAzure SQLApplication Gateway v2Azure App ServiceNSGApplication InsightsRBACVNet

Resource Details

Resource Grouprg-multitier-autoscale-dev
RegionMexico Central
App Gatewayagw-multitier-dev (Standard V2)
Zones1 / 2 / 3
Min Instances2
Max Instances10