Logo
Architekturdiagramm des ereignisgesteuerten Auftragsverarbeitungssystems

Ereignisgesteuertes Auftragsverarbeitungssystem

azureevent-driven-architecturetypescriptnext.jsazure-functionsservice-businfrastructure-as-codebicep

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:

  1. Frontend übermittelt Aufträge per HTTP an eine Azure Function
  2. HTTP Trigger Function validiert den Auftrag und veröffentlicht ihn im Service Bus
  3. Service Bus Queue speichert Nachrichten zuverlässig mit automatischer Wiederholung
  4. Queue Trigger Function verarbeitet Aufträge asynchron
  5. Dead Letter Processor behandelt fehlgeschlagene Nachrichten nach maximalen Wiederholungen
  6. 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:

  1. Vollständige Azure-Infrastruktur (5-7 Minuten)
  2. Backend Azure Functions (2-3 Minuten)
  3. 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

Lesen Sie den detaillierten Build-Prozess →