Design: Microservices System with Bulkhead Pattern
Design focuses on applying the bulkhead pattern in a microservices architecture to isolate failures and manage resource usage. It excludes detailed implementation of each microservice business logic.
Functional Requirements
FR1: Isolate failures in one microservice so they do not cascade to others
FR2: Ensure system remains responsive even if some services are slow or failing
FR3: Limit resource usage per service to prevent resource exhaustion
FR4: Support concurrent requests with controlled resource allocation
FR5: Provide monitoring to detect and react to service degradation
Non-Functional Requirements
NFR1: Handle up to 10,000 concurrent requests across services
NFR2: API response latency p99 under 300ms under normal load
NFR3: Availability target of 99.9% uptime
NFR4: Resource limits per service instance (CPU, memory) must be respected
NFR5: Services communicate over REST or gRPC