Bird
Raised Fist0
Microservicessystem_design~20 mins

Traffic management (routing, splitting) in Microservices - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Traffic Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Traffic Routing in Microservices

In a microservices architecture, what is the primary purpose of traffic routing?

ATo direct incoming requests to the appropriate microservice based on rules or conditions
BTo store user data securely in a database
CTo compress data before sending it over the network
DTo monitor CPU usage of each microservice
Attempts:
2 left
💡 Hint

Think about how requests find the right service to handle them.

Architecture
intermediate
2:00remaining
Choosing a Traffic Splitting Strategy

You want to deploy a new version of a microservice and gradually shift 20% of traffic to it while keeping 80% on the old version. Which traffic splitting method is best suited for this?

AUse a firewall to block 80% of requests to the new version
BUse weighted routing to split traffic based on percentages
CUse client-side load balancing to randomly pick a version
DUse DNS round-robin to alternate requests between versions
Attempts:
2 left
💡 Hint

Consider a method that can precisely control traffic percentages.

scaling
advanced
2:30remaining
Scaling Traffic Management for High Load

Your microservices system experiences sudden spikes in traffic. Which design choice helps maintain efficient traffic routing and splitting at scale?

ARoute all traffic through the database to decide service versions
BUse a single centralized load balancer for all routing and splitting
CImplement a distributed service mesh with sidecar proxies for routing decisions
DDisable traffic splitting during spikes to reduce complexity
Attempts:
2 left
💡 Hint

Think about decentralizing routing logic to handle scale.

tradeoff
advanced
2:30remaining
Tradeoffs in Traffic Splitting Methods

Which is a key tradeoff when using client-side traffic splitting versus server-side traffic splitting?

AClient-side splitting reduces network latency but increases server load
BServer-side splitting cannot handle weighted traffic percentages
CServer-side splitting requires clients to be updated frequently
DClient-side splitting offers flexibility but can cause inconsistent traffic distribution
Attempts:
2 left
💡 Hint

Consider who controls the routing decisions and how that affects consistency.

estimation
expert
3:00remaining
Estimating Capacity for Traffic Routing Layer

Your microservices system expects 1 million requests per minute. Each routing decision takes 1 millisecond of CPU time. How many CPU cores are needed to handle routing without delay, assuming each core can process 1000 routing decisions per second?

AApproximately 17 cores
BApproximately 10 cores
CApproximately 100 cores
DApproximately 5 cores
Attempts:
2 left
💡 Hint

Calculate requests per second and divide by processing capacity per core.

Practice

(1/5)
1. What is the main purpose of traffic routing in microservices architecture?
easy
A. To direct incoming requests to specific services based on rules
B. To store data persistently across services
C. To encrypt communication between services
D. To monitor service health and uptime

Solution

  1. Step 1: Understand traffic routing

    Traffic routing means sending requests to the right service based on rules like URL path or user type.
  2. Step 2: Identify the main purpose

    Routing helps control where requests go, ensuring they reach the correct microservice.
  3. Final Answer:

    To direct incoming requests to specific services based on rules -> Option A
  4. Quick Check:

    Routing = directing requests [OK]
Hint: Routing means sending requests to the right place [OK]
Common Mistakes:
  • Confusing routing with data storage
  • Thinking routing encrypts data
  • Mixing routing with monitoring
2. Which of the following is a correct way to define a traffic splitting rule in a service mesh configuration?
easy
A. split: - weight: 50 service: v1 - weight: 50 service: v2
B. route: path: /api service: v1
C. split: - service: v1 - service: v2 - weight: 100
D. route: weight: 100 service: v1 path: /home

Solution

  1. Step 1: Understand traffic splitting syntax

    Traffic splitting uses weights to divide requests between service versions, e.g., 50% to v1 and 50% to v2.
  2. Step 2: Identify correct syntax

    split: - weight: 50 service: v1 - weight: 50 service: v2 correctly assigns weights to services for splitting. Other options mix routing and splitting or have invalid weight placement.
  3. Final Answer:

    split: - weight: 50 service: v1 - weight: 50 service: v2 -> Option A
  4. Quick Check:

    Splitting uses weights per service [OK]
Hint: Splitting needs weights assigned to each service [OK]
Common Mistakes:
  • Confusing routing rules with splitting rules
  • Missing weights in splitting definitions
  • Placing weights outside service entries
3. Given this traffic splitting configuration, what percentage of requests go to service v2?
split:
  - weight: 70
    service: v1
  - weight: 30
    service: v2
medium
A. 100%
B. 70%
C. 50%
D. 30%

Solution

  1. Step 1: Read the weights for each service

    Service v1 has weight 70, and service v2 has weight 30.
  2. Step 2: Calculate percentage for v2

    Total weight = 70 + 30 = 100. So, v2 gets 30/100 = 30% of requests.
  3. Final Answer:

    30% -> Option D
  4. Quick Check:

    Weight 30 means 30% traffic [OK]
Hint: Traffic % = service weight / total weight [OK]
Common Mistakes:
  • Adding weights incorrectly
  • Assuming equal split without weights
  • Confusing service names
4. You have this routing rule:
route:
  path: /user
  service: user-service-v1
  weight: 100
But requests to /user/profile are not reaching user-service-v1. What is the likely problem?
medium
A. Service name is incorrect and causes failure
B. Weight should be split between multiple services
C. The path rule matches only exact /user, not subpaths like /user/profile
D. Routing rules cannot use path matching

Solution

  1. Step 1: Analyze the path matching rule

    The rule matches exactly /user, but /user/profile is a subpath and may not match unless wildcard or prefix matching is used.
  2. Step 2: Identify why requests fail

    Since /user/profile does not match exactly /user, requests do not route to user-service-v1.
  3. Final Answer:

    The path rule matches only exact /user, not subpaths like /user/profile -> Option C
  4. Quick Check:

    Exact path matching excludes subpaths [OK]
Hint: Exact path matches exclude subpaths unless wildcard used [OK]
Common Mistakes:
  • Assuming weight must be split
  • Blaming service name without checking
  • Thinking routing ignores paths
5. You want to gradually roll out a new version of a payment service to 10% of users while keeping 90% on the old version. Which traffic management strategy is best suited for this?
hard
A. Use routing based on URL path to send 10% of requests to new service
B. Use traffic splitting with weights 90% to old and 10% to new service
C. Deploy both versions without traffic control and monitor errors
D. Use a load balancer that randomly sends requests without weights

Solution

  1. Step 1: Understand gradual rollout needs

    Gradual rollout means controlling what percentage of users see the new version.
  2. Step 2: Choose traffic management method

    Traffic splitting with weights allows precise control of request percentages to each version.
  3. Step 3: Evaluate other options

    Routing by URL path cannot split traffic by percentage. Random load balancing lacks control. Deploying without control risks all users seeing new version.
  4. Final Answer:

    Use traffic splitting with weights 90% to old and 10% to new service -> Option B
  5. Quick Check:

    Splitting controls rollout percentages [OK]
Hint: Use weighted splitting for gradual rollout [OK]
Common Mistakes:
  • Using URL path routing for percentage split
  • Ignoring traffic control during rollout
  • Relying on random load balancing