Bird
Raised Fist0
Microservicessystem_design~5 mins

Saga pattern for distributed transactions 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 the Saga pattern in distributed transactions?
The Saga pattern breaks a large transaction into smaller, independent steps called sagas. Each step updates data and publishes an event. If a step fails, compensating actions undo previous steps to keep data consistent.
Click to reveal answer
beginner
How does the Saga pattern handle failures in a distributed system?
When a step in the saga fails, the pattern triggers compensating transactions that reverse the effects of previous successful steps, ensuring the system returns to a consistent state.
Click to reveal answer
intermediate
What are the two main coordination styles of the Saga pattern?
1. Choreography: Each service listens for events and decides when to act. 2. Orchestration: A central coordinator tells each service what to do next.
Click to reveal answer
intermediate
Why is the Saga pattern preferred over distributed two-phase commit in microservices?
Because it avoids locking resources for long times, improves scalability, and fits better with asynchronous communication common in microservices.
Click to reveal answer
beginner
What is a compensating transaction in the Saga pattern?
A compensating transaction is an action that reverses the effects of a previously completed step in the saga to maintain data consistency after a failure.
Click to reveal answer
What does a compensating transaction do in the Saga pattern?
AReverses a previous successful step
BCommits the current transaction
CStarts a new saga
DLocks resources for consistency
Which coordination style uses a central controller in the Saga pattern?
AOrchestration
BTwo-phase commit
CEvent sourcing
DChoreography
Why is the Saga pattern better than two-phase commit for microservices?
AIt locks resources longer
BIt is synchronous
CIt improves scalability and uses asynchronous communication
DIt requires a central database
In the Saga pattern, what triggers the next step in choreography style?
AA central coordinator
BAn event published by the previous step
CA timeout event
DManual intervention
What is the main goal of the Saga pattern?
ATo centralize all business logic
BTo lock all resources during a transaction
CTo speed up database queries
DTo maintain data consistency across services without distributed locks
Explain how the Saga pattern manages distributed transactions and handles failures.
Think about how each step is independent and how the system recovers if something goes wrong.
You got /4 concepts.
    Compare choreography and orchestration styles in the Saga pattern.
    Consider who controls the flow of the saga in each style.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Saga pattern in microservices?
      easy
      A. To replicate data across multiple databases synchronously
      B. To manage distributed transactions by breaking them into smaller steps with compensations
      C. To speed up database queries by caching results
      D. To lock all resources until the transaction completes

      Solution

      1. Step 1: Understand distributed transactions challenges

        Distributed transactions across microservices are hard because locking resources is inefficient and can cause delays.
      2. Step 2: Identify Saga pattern role

        The Saga pattern breaks a big transaction into smaller steps, each with a compensating action to undo if needed, avoiding locks.
      3. Final Answer:

        To manage distributed transactions by breaking them into smaller steps with compensations -> Option B
      4. Quick Check:

        Saga pattern = distributed transaction management [OK]
      Hint: Saga means small steps with undo actions for transactions [OK]
      Common Mistakes:
      • Thinking Saga locks resources like traditional transactions
      • Confusing Saga with caching or replication
      • Assuming Saga runs all steps in parallel
      2. Which of the following is the correct sequence in a Saga pattern transaction?
      easy
      A. Execute steps and compensations simultaneously
      B. Run compensations first, then execute all steps
      C. Execute only compensations without any steps
      D. Execute steps sequentially, then run compensations if any step fails

      Solution

      1. Step 1: Understand Saga execution flow

        Saga executes each step in order. If a step fails, compensations undo previous steps.
      2. Step 2: Confirm correct sequence

        Compensations run only after a failure, never before or simultaneously with steps.
      3. Final Answer:

        Execute steps sequentially, then run compensations if any step fails -> Option D
      4. Quick Check:

        Steps then compensations = correct Saga flow [OK]
      Hint: Steps run first; compensations only if failure occurs [OK]
      Common Mistakes:
      • Running compensations before any step
      • Running steps and compensations at the same time
      • Skipping compensations on failure
      3. Consider a Saga with three steps: A, B, and C. Step B fails after A succeeds. What happens next?
      medium
      A. Saga retries step B indefinitely without compensation
      B. Step C runs regardless of failure
      C. Compensation for step A runs, then Saga aborts
      D. No compensation runs; Saga commits partial results

      Solution

      1. Step 1: Analyze failure impact in Saga

        When step B fails, Saga must undo previous successful steps to keep data consistent.
      2. Step 2: Identify compensation actions

        Compensation for step A runs to rollback its changes, then Saga aborts without running step C.
      3. Final Answer:

        Compensation for step A runs, then Saga aborts -> Option C
      4. Quick Check:

        Failure triggers compensation rollback [OK]
      Hint: Failure in middle triggers compensations backward [OK]
      Common Mistakes:
      • Assuming later steps run after failure
      • Thinking Saga retries endlessly without rollback
      • Ignoring compensation steps
      4. A developer implemented a Saga but noticed data inconsistencies after failures. What is the most likely cause?
      medium
      A. Compensation actions are missing or incomplete
      B. All steps are executed synchronously
      C. Steps are too small and independent
      D. Saga pattern locks all resources during execution

      Solution

      1. Step 1: Identify cause of inconsistencies

        Data inconsistencies after failure usually mean rollback (compensation) did not happen properly.
      2. Step 2: Check compensation implementation

        If compensation actions are missing or incomplete, previous steps cannot be undone, causing inconsistency.
      3. Final Answer:

        Compensation actions are missing or incomplete -> Option A
      4. Quick Check:

        Missing compensation = inconsistency [OK]
      Hint: Always implement full compensations for each step [OK]
      Common Mistakes:
      • Assuming synchronous execution causes inconsistency
      • Believing small steps cause inconsistency
      • Thinking Saga locks resources like traditional transactions
      5. You design a payment system using Saga pattern with steps: debit account, reserve inventory, and confirm order. If inventory reservation fails, what should happen?
      hard
      A. Run compensation to credit back the debited amount and abort order confirmation
      B. Ignore failure and proceed to confirm order
      C. Retry inventory reservation indefinitely without compensation
      D. Lock all services until inventory is reserved

      Solution

      1. Step 1: Understand Saga compensation in payment flow

        If inventory reservation fails, previous successful steps (debit account) must be undone to avoid inconsistent state.
      2. Step 2: Apply compensation and abort

        Compensation credits back the debited amount, and order confirmation is aborted to maintain consistency.
      3. Final Answer:

        Run compensation to credit back the debited amount and abort order confirmation -> Option A
      4. Quick Check:

        Failure triggers compensation rollback and abort [OK]
      Hint: Failure in middle step triggers rollback of prior steps [OK]
      Common Mistakes:
      • Proceeding despite failure causing inconsistent state
      • Retrying endlessly without rollback
      • Locking services defeats Saga benefits