Ein produktionsreifes E-Commerce-Auftragsverarbeitungssystem, gebaut mit Azure Functions, Service Bus und Next.js. Dieses Projekt demonstriert Cloud-native Muster auf Enterprise-Niveau, einschließlich ereignisgesteuerter Architektur, Infrastructure as Code und vollständiger Beobachtbarkeit.
Hauptfunktionen
- Ereignisgesteuerte Architektur: Asynchrone Auftragsverarbeitung mit Azure Service Bus Queues
- Serverless Backend: Vier Azure Functions (TypeScript) für HTTP-Trigger, Queue-Verarbeitung, Dead Letter Handling und Health Checks
- Modernes Frontend: Next.js-Anwendung mit React Hook Form, Zod-Validierung und TanStack Query
- Infrastructure as Code: Vollständige Azure-Infrastruktur in Bicep mit modularem Design definiert
- Vollständige Beobachtbarkeit: Application Insights Integration mit Custom Events, Metriken und KQL-Queries
- Automatisierte CI/CD: GitHub Actions Workflows für Infrastruktur- und Anwendungsbereitstellung
- Fehlerbehandlung: Automatische Retry-Logik, Dead Letter Queue Verarbeitung und Circuit Breaker Pattern
- Produktionsreif: Umfassende Sicherheit, Validierung, Testing und Monitoring
Tech Stack
Backend:
- Azure Functions (Node.js Runtime)
- TypeScript
- Azure Service Bus
- Application Insights
- Zod für Validierung
Frontend:
- Next.js mit App Router
- React Hook Form
- TanStack Query
- shadcn/ui Komponenten
- Dark Mode Unterstützung
Infrastruktur:
- Bicep (Infrastructure as Code)
- Azure Resource Manager
- GitHub Actions für CI/CD
Architektur
Das System implementiert das Queue-Based Load Leveling Muster mit Competing Consumers:
- Frontend übermittelt Aufträge per HTTP an eine Azure Function
- HTTP Trigger Function validiert den Auftrag und veröffentlicht ihn im Service Bus
- Service Bus Queue speichert Nachrichten zuverlässig mit automatischer Wiederholung
- Queue Trigger Function verarbeitet Aufträge asynchron
- Dead Letter Processor behandelt fehlgeschlagene Nachrichten nach maximalen Wiederholungen
- Application Insights verfolgt alle Events, Metriken und Fehler
Diese Architektur bietet:
- Entkopplung: Frontend und Backend sind vollständig unabhängig
- Zuverlässigkeit: Nachrichten bleiben erhalten, wenn die Verarbeitung fehlschlägt
- Skalierbarkeit: Mehrere Consumer verarbeiten Nachrichten parallel
- Resilienz: Automatische Wiederholung mit exponentiellem Backoff
- Performance: Schnelle Benutzerantwortzeiten durch asynchrone Verarbeitung
Infrastructure as Code
Alle Azure-Ressourcen sind in Bicep-Modulen definiert:
- Service Bus: Queue mit produktionsreifen Einstellungen (10 maximale Wiederholungen, 5-Minuten Lock-Dauer, 14-Tage TTL)
- Function App: Vorkonfiguriert mit Application Insights, Service Bus Verbindung und Umgebungseinstellungen
- Application Insights: Monitoring mit Custom Events und KQL-Queries
- Storage Account: Erforderlich für Azure Functions Runtime
- Static Web App: Hosting für das Next.js-Frontend
Die Infrastruktur unterstützt mehrere Umgebungen (dev, staging, prod) durch parametrisierte Deployments.
Fehlerbehandlung & Resilienz
- Automatische Wiederholungen: Service Bus wiederholt fehlgeschlagene Nachrichten bis zu 10 Mal mit exponentiellem Backoff
- Dead Letter Queue: Nachrichten, die nach maximalen Wiederholungen fehlschlagen, werden in DLQ zur Untersuchung verschoben
- Circuit Breaker: Verhindert kaskadierende Fehler, wenn externe Services nicht verfügbar sind
- Transient Fault Handling: Unterscheidet zwischen transienten (Wiederholung) und permanenten (DLQ) Fehlern
- Health Checks: Endpunkt zur Überwachung von Systemgesundheit und Konfiguration
Beobachtbarkeit
Umfassendes Monitoring durch Application Insights:
- Custom Events: OrderSubmitted, OrderProcessed mit Auftragsdetails
- Exceptions: Verfolgt mit Kontext (orderId, Fehlertyp, Delivery Count)
- Metriken: Verarbeitungsdauer, Queue-Tiefe, Fehlerraten
- KQL-Queries: Vorgefertigte Queries für Übermittlungsrate, durchschnittliche Verarbeitungszeit und Fehleranalyse
- Alerts: Konfigurierbare Alarme für hohe Fehlerraten, langsame Verarbeitung und Queue-Tiefe
Deployment
Ein-Befehl-Deployment-Skript:
./scripts/deploy-local.sh dev
Dies stellt bereit:
- Vollständige Azure-Infrastruktur (5-7 Minuten)
- Backend Azure Functions (2-3 Minuten)
- Frontend Next.js-Anwendung (falls konfiguriert)
Kostenschätzung: ~11-21€/Monat für Entwicklungsumgebung unter Verwendung kostenloser Tiers.
Sicherheit
- Authentifizierung: Function-Level Authentifizierung mit Azure Functions Keys
- Validierung: Zod-Schemas für typsichere Eingabevalidierung
- Secrets-Management: Azure Key Vault Integration für Connection Strings
- CORS: Konfiguriert, um nur spezifische Origins zuzulassen
- HTTPS: Erzwungen auf allen Services
- Managed Identity: Für sichere Service-zu-Service-Authentifizierung
Testing
- Unit Tests: Test einzelner Functions mit gemockten Dependencies
- Integration Tests: End-to-End Auftragsfluss-Validierung
- Typsicherheit: TypeScript gewährleistet Compile-Time Type Checking
- Schema-Validierung: Zod-Schemas zwischen Frontend und Backend geteilt



