Das Modell
Serverless bedeutet nicht “kein Server”, sondern “kein Server-Management”. Vercel kümmert sich um Provisioning, Scaling, Maintenance. Du schreibst nur die Funktion.
Borzsport-Architektur
api/fighters.js → /api/fighters (25s timeout) api/gyms.js → /api/gyms (10s timeout) api/analytics.js → /api/analytics (30s timeout) api/events.js → /api/events (15s timeout) api/landing.js → /api/landing (10s timeout)
Sub-Routing per Query-Parameter: /api/fighters?id=42&action=summary
Shared Modules
- _supabase.js — Datenbankverbindung (Service Role Key)
- _cors.js — CORS-Whitelist + Rate Limiting + API-Key-Check
- _helpers.js — parseRecord(), parseFights() — Record-String zu Objekt
- _events.js — Audit-Logging für alle Write-Operations
Unterstrich-Präfix = kein eigener Endpoint. Vercel exponiert sie nicht.
Cold Starts
Beim ersten Request nach Inaktivität: Runtime muss initialisiert werden (100–500ms). Borzsport mitigiert das mit aggressivem HTTP Caching (stale-while-revalidate).
Cold Start vs. Warm vs. Cached
Simuliere die drei Request-Typen und sieh, wie sich die Latenz zusammensetzt:
INTERAKTIV
Cold Start Simulator
Vergleiche Cold Start, Warm Start und CDN-Cache — sieh wie sich die Request-Latenz verändert.
440ms
Total Latenz
⚠️ Runtime Init + Module Load machen ~62% der Latenz aus — das ist Cold Start Overhead.
DNS / TLSDNS-Lookup + TLS-Handshake zum CDN
45msRuntime InitNode.js Runtime wird gestartet (V8 isolate)
180msModule Loadrequire() — Imports, Supabase-Client init
95msHandlerEigentliche Datenbankquery + Response
120ms