A multilingual (KO/EN) on-site registration system for the Dong-A Expo at Busan BEXCO, designed, developed, and operated single-handedly on Azure PaaS. Across two exhibitions it processed 84,943 HTTP requests and 814 registrants at 99.89% availability — all on free / serverless tiers for roughly $5 / month.
Korean + English form for foreign visitors — 100+ country dropdown with auto phone country-code, dynamic province → city dropdowns (17 provinces, 250+ districts), QR code issuance, and Korean IME-safe input handling (compositionstart/end).
Basic-Auth admin on Azure Functions v4 — real-time registrant list (search / filter / pagination), inline edit, Excel export (ExcelJS, 13 columns, KO/EN split), and start/stop control of the App Service via Azure REST API.
8 visualizations — daily registration trend, age / occupation / gender / referral-channel distributions, regional breakdown, plus cross-analysis (occupation × gender, age × occupation, region × age).
Push-to-deploy pipeline for both apps — Node 20 build → zip deploy to Azure. Average ~2 min to production, zero-downtime instance swap, auto-rollback on build failure.
Azure Monitor + Application Insights for request count, response time, 5xx ratio, and live metrics. Automated metric collection via Azure CLI (az monitor metrics list) for event-day reporting.
Parameterized queries (SQL-injection safe), client + server dual validation, HTTPS-only, Cache-Control: no-store, and Managed Identity for resource-to-resource auth when controlling the App Service.
Main event (Jun 3–7) — daily request and registration breakdown captured from Azure Monitor metrics:
| Date | Requests | Resp. Time | 5xx | Registrants |
|---|---|---|---|---|
| 06-03 | 9,346 | 190ms | 0.30% | — |
| 06-04 | 7,700 | 182ms | 0.21% | 104 |
| 06-05 | 24,443 | 152ms | 0.11% | 89 |
| 06-06 | 26,520 | 132ms | 0.01% | 296 |
| 06-07 | — | — | — | 324 |
| Total | 68,009 | avg 164ms | 0.11% | 813 |
Real event traffic peaked at 5,191 req/hr (~1.4 req/s) with an average response time of 164ms and a 5xx ratio of just 0.11% on the F1 free tier. Since the observed load stayed comfortably within the free tier's headroom, no B1 ($13) / S1 ($70) upgrade was needed — keeping operating cost at ~$5/month while serving 68K requests successfully.
Multilingual registration form (KO / EN)
Admin — App Service start/stop control
Chart.js statistics dashboard (8 charts)
Cross-analysis (occupation × gender, age × occupation)
Completion-message customization (KO / EN)
Cloud / DevOps (My Part)
Application