Request Lifecycle: GET /users
1Request Arrives
Client sends: GET /users with X-API-Key: sk_test_123
2Logging Starts
Timer starts tracking request duration
3Tenant Resolution
Resolves sk_test_123 → tenantA, stores in context
4Metrics Preparation
Wraps response to capture final status code
5Tracing Span
Creates OpenTelemetry span: "GET /users"
6Router Matches
/users → securedUserHandler
7Analytics Records
Redis INCR analytics:req:tenantA:/users
8Rate Limit Check
Redis GET ratelimit:tenantA → 99 tokens remaining ✓
Redis DECR ratelimit:tenantA → 98
9Chaos Check
Config: Enabled=false → No injection ✓
10Backend Proxy
HTTP GET http://localhost:9001/users
Response: 200 OK {"service": "users", "status": "ok"}
11Analytics Captures
Duration: 45ms, Status: 200
12Metrics Records
api_gateway_requests_total{route="/users",tenant="tenantA",status="200"}++
13Logging Outputs
GET /users 45ms
14Response Sent
Client receives: 200 OK {"service": "users", "status": "ok"}