Design: Microservices Traffic Management System
Design focuses on traffic routing and splitting layer in front of microservices. Does not cover microservice internal logic or database design. Does not include client-side load balancing.
Functional Requirements
FR1: Route incoming client requests to appropriate microservice instances based on service version or environment.
FR2: Support traffic splitting to gradually shift traffic between different service versions (e.g., canary releases).
FR3: Allow dynamic configuration of routing rules without downtime.
FR4: Provide observability for traffic distribution and routing decisions.
FR5: Ensure minimal added latency (p99 < 50ms) for routing decisions.
FR6: Handle at least 10,000 requests per second with 99.9% availability.
Non-Functional Requirements
NFR1: System must support zero downtime updates to routing rules.
NFR2: Latency overhead for routing must be minimal to avoid user impact.
NFR3: High availability with failover for routing components.
NFR4: Scalable to handle traffic spikes up to 50,000 requests per second.
NFR5: Security: only authorized operators can change routing rules.