Bird
Raised Fist0
Microservicessystem_design~5 mins

Graceful degradation in Microservices - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is graceful degradation in system design?
Graceful degradation means a system keeps working with reduced features or performance when parts fail, instead of completely stopping.
Click to reveal answer
beginner
Why is graceful degradation important in microservices?
It helps the system stay available and responsive even if some microservices fail or slow down, improving user experience.
Click to reveal answer
intermediate
Name a common technique to implement graceful degradation in microservices.
Using fallback methods or default responses when a microservice is unavailable is a common technique.
Click to reveal answer
intermediate
How does circuit breaker pattern relate to graceful degradation?
Circuit breaker stops calls to failing services temporarily, allowing the system to degrade gracefully instead of waiting for timeouts.
Click to reveal answer
advanced
Give an example of graceful degradation in a real-world microservice system.
If a recommendation service fails, the system can still show basic product info without recommendations, so users can continue shopping.
Click to reveal answer
What does graceful degradation aim to achieve?
AKeep system running with reduced features during failures
BImmediately shut down the system on any failure
CIgnore failures and continue as normal
DRestart the entire system on failure
Which pattern helps implement graceful degradation by stopping calls to failing services?
ALoad balancer
BDatabase sharding
CCircuit breaker
DService discovery
In microservices, what is a fallback?
AA backup microservice that replaces the main one
BA default response or alternative action when a service fails
CA security mechanism
DA load balancing technique
Which of these is NOT a benefit of graceful degradation?
AComplete system shutdown on minor errors
BImproved user experience during partial failures
CHigher system availability
DReduced impact of service failures
What happens if a microservice fails and graceful degradation is NOT implemented?
ASystem continues normally without issues
BSystem improves performance
CSystem automatically fixes the failure
DSystem may become unresponsive or crash
Explain graceful degradation and why it matters in microservices.
Think about how a system behaves when some parts fail but it still works.
You got /3 concepts.
    Describe techniques to implement graceful degradation in a microservice architecture.
    Consider patterns and fallback strategies that keep the system responsive.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main goal of graceful degradation in microservices?
      easy
      A. To increase the number of microservices for better scaling
      B. To immediately stop all services when one fails
      C. To keep the system running with reduced functionality during failures
      D. To replace microservices with a monolithic architecture

      Solution

      1. Step 1: Understand the concept of graceful degradation

        Graceful degradation means the system continues to work even if some parts fail, but with limited features.
      2. Step 2: Identify the goal in microservices context

        In microservices, it ensures users still get responses, possibly simpler or fallback, instead of total failure.
      3. Final Answer:

        To keep the system running with reduced functionality during failures -> Option C
      4. Quick Check:

        Graceful degradation = reduced functionality during failure [OK]
      Hint: Graceful degradation means partial working, not full stop [OK]
      Common Mistakes:
      • Thinking graceful degradation means full system shutdown
      • Confusing graceful degradation with scaling techniques
      • Assuming it replaces microservices with monolith
      2. Which of the following is a correct way to implement graceful degradation in a microservice call?
      easy
      A. Restart the entire microservice cluster immediately
      B. Return an error and stop the entire request flow
      C. Ignore the failure and return no response
      D. Use a fallback response when the called service is unavailable

      Solution

      1. Step 1: Identify how graceful degradation handles failures

        It uses fallback responses or simpler data to keep the system responsive.
      2. Step 2: Match the option that uses fallback

        Use a fallback response when the called service is unavailable describes using fallback response when a service is down, which is correct.
      3. Final Answer:

        Use a fallback response when the called service is unavailable -> Option D
      4. Quick Check:

        Fallback response = graceful degradation [OK]
      Hint: Fallback response is key to graceful degradation [OK]
      Common Mistakes:
      • Stopping entire request instead of fallback
      • Ignoring failure without response
      • Restarting cluster is not graceful degradation
      3. Consider this pseudocode for a microservice call with graceful degradation:
      response = callService()
      if response == null:
          response = getCachedData()
      return response

      What will be returned if callService() fails?
      medium
      A. Cached data as fallback
      B. Null value
      C. An error message
      D. Empty string

      Solution

      1. Step 1: Analyze the code flow when callService() fails

        If callService() returns null (failure), the code fetches cached data as fallback.
      2. Step 2: Determine the returned value

        The fallback cached data is returned instead of null or error.
      3. Final Answer:

        Cached data as fallback -> Option A
      4. Quick Check:

        Fallback cached data returned on failure [OK]
      Hint: Null response triggers fallback to cached data [OK]
      Common Mistakes:
      • Assuming error message is returned
      • Thinking null is returned directly
      • Confusing empty string with fallback data
      4. A microservice uses this code snippet for graceful degradation:
      try {
        data = fetchFromService()
      } catch (Exception e) {
        data = null
      }
      return data.toString()

      What is the main problem with this code?
      medium
      A. It does not handle exceptions properly
      B. It returns null.toString() causing a runtime error
      C. It always returns an empty string
      D. It retries the service call infinitely

      Solution

      1. Step 1: Understand exception handling and return statement

        If fetchFromService() fails, data is set to null, then data.toString() is called.
      2. Step 2: Identify the error caused by calling toString() on null

        Calling toString() on null causes a runtime NullPointerException or similar error.
      3. Final Answer:

        It returns null.toString() causing a runtime error -> Option B
      4. Quick Check:

        Calling toString() on null causes error [OK]
      Hint: Calling method on null causes runtime error [OK]
      Common Mistakes:
      • Ignoring null check before toString()
      • Assuming exception is handled fully
      • Thinking it retries infinitely
      5. You design a microservice system where the payment service may fail. To apply graceful degradation, which approach is best?
      hard
      A. Return a simplified confirmation without payment details and log failure for retry
      B. Block the entire order process until payment service recovers
      C. Send an error response to the user immediately without fallback
      D. Remove the payment service and process orders without payment

      Solution

      1. Step 1: Understand graceful degradation for critical service failure

        When payment service fails, system should still respond with limited info, not block or error out.
      2. Step 2: Evaluate options for best graceful degradation

        Return a simplified confirmation without payment details and log failure for retry returns simplified confirmation and logs failure for retry, maintaining user experience and system reliability.
      3. Final Answer:

        Return a simplified confirmation without payment details and log failure for retry -> Option A
      4. Quick Check:

        Simplified response + retry = graceful degradation [OK]
      Hint: Simplify response and log failure for retry [OK]
      Common Mistakes:
      • Blocking entire process on failure
      • Sending immediate error without fallback
      • Removing critical service entirely