← Back to Questions
Microservices

What is distributed transaction in Microservices?

Learn What is distributed transaction in Microservices? with simple explanations, real-time examples, interview tips and practical use cases.

What is Distributed Transaction in Microservices?

A Distributed Transaction in Microservices is a transaction that involves multiple independent services and databases where all operations must either succeed together or fail together to maintain data consistency.

In Microservices Architecture:

  • Each microservice usually owns its own database
  • Business operations often span multiple services
  • Maintaining consistency across services becomes challenging

Distributed transactions help coordinate these operations across multiple services.


Why Distributed Transactions are Important

In real-world enterprise systems:

  • One business request may involve multiple services
  • Each service may update its own database
  • If one operation fails, the system can become inconsistent

Distributed transactions ensure:

  • Data consistency
  • Reliable business workflows
  • Correct transaction processing

Simple Banking Example

Suppose a banking platform contains:

  • Account Service
  • Payment Service
  • Notification Service
  • Audit Service

A customer transfers:

₹1,00,000
    

from one account to another.

Multiple services must work together:

  • Debit sender account
  • Credit receiver account
  • Store transaction logs
  • Send SMS notification

If any operation fails:

  • Entire transaction should rollback

This is where distributed transactions become important.


Traditional Monolithic Transaction

In monolithic applications:

BEGIN TRANSACTION

Debit Account
Credit Account
Store Logs

COMMIT
    

All operations occur in one database transaction.


Problem in Microservices

Account Service Database
Payment Service Database
Notification Service Database
Audit Service Database
    

Multiple independent databases cannot easily share a single transaction.


Distributed Transaction Example

Step 1 -> Debit Sender Account
Step 2 -> Credit Receiver Account
Step 3 -> Store Audit Logs
Step 4 -> Send Notification
    

If Step 3 fails:

Rollback Step 1 and Step 2
    

This maintains consistency.


Main Challenges in Distributed Transactions

  • Multiple databases involved
  • Network failures
  • Service downtime
  • Data synchronization delays
  • Rollback complexity

Why Distributed Transactions are Difficult

In distributed systems:

  • Services run independently
  • Databases are isolated
  • Communication happens over networks
  • Failures can occur at any time

Coordinating transactions across all services becomes complex.


Distributed Transaction Architecture

Client Request
      |
-----------------------------------------
|       |        |         |            |
Account Payment Notification Audit
Service Service  Service      Service
    

Multiple services participate in one business transaction.


ACID Properties in Transactions

Traditional transactions follow:

ACID
    
  • Atomicity
  • Consistency
  • Isolation
  • Durability

Atomicity Example

Either:

  • All operations succeed

OR

  • All operations rollback

Partial updates should never happen.


Consistency Example

Suppose:

Sender Balance = ₹5,00,000
Receiver Balance = ₹2,00,000
Transfer = ₹1,00,000
    

Final balances should remain mathematically correct.


Isolation Example

Multiple simultaneous transactions should not interfere with each other.


Durability Example

Once transaction commits:

  • Data should survive crashes
  • Data should remain permanently stored

Main Approaches for Distributed Transactions

  • Two-Phase Commit (2PC)
  • Saga Pattern
  • TCC Pattern (Try Confirm Cancel)
  • Eventual Consistency

1. Two-Phase Commit (2PC)

Two-Phase Commit is a protocol used to coordinate distributed transactions.

It contains:

  • Prepare Phase
  • Commit Phase

2PC Banking Example

Phase 1: Prepare

Account Service -> Ready
Payment Service -> Ready
Audit Service -> Ready
    

Phase 2: Commit

Commit Transaction
    

Problem with Two-Phase Commit

  • Distributed locking
  • Performance overhead
  • Reduced scalability
  • Coordinator bottleneck

Therefore modern microservices often avoid 2PC.


2. Saga Pattern

Saga Pattern breaks one large transaction into multiple local transactions.

If one step fails:

  • Compensation transactions rollback previous steps

Saga Banking Example

Debit Account
      |
Credit Receiver
      |
Send Notification
    

If notification fails:

Refund Sender Account
    

3. TCC Pattern (Try Confirm Cancel)

TCC contains:

  • Try
  • Confirm
  • Cancel

TCC Banking Example

Try

Reserve ₹1,00,000
    

Confirm

Complete Transfer
    

Cancel

Release Reserved Amount
    

4. Eventual Consistency

In eventual consistency:

  • Temporary inconsistency is allowed
  • Systems eventually synchronize

Eventual Consistency Example

Payment Processed
      |
Notification Delayed
      |
Eventually Notification Sent
    

Distributed Transactions with Kafka

Apache Kafka is widely used for distributed transaction coordination.

Benefits:

  • Reliable event streaming
  • Asynchronous communication
  • Scalable architecture

Kafka Example

Publishing Event

kafkaTemplate.send(

    "bank-transactions",

    transferCompletedEvent

);
    

Consuming Event

@KafkaListener(topics = "bank-transactions")

public void consume(
    TransferCompletedEvent event
) {

    notificationService.sendSMS(event);

}
    

Distributed Transactions in Spring Boot

Saga Orchestrator Example

@Service

public class TransferSagaService {

    public void transferMoney() {

        paymentService.debit();

        accountService.credit();

        notificationService.notifyUser();

    }

}
    

Benefits of Distributed Transactions

  • Maintains data consistency
  • Supports complex business workflows
  • Improves reliability
  • Supports distributed systems
  • Enables scalable architectures

Real-Time Banking Use Cases

  • Fund transfers
  • Loan processing
  • Credit card settlements
  • Insurance claim processing
  • ATM transaction management

E-Commerce Example

Suppose customer places order:

  • Order Service creates order
  • Payment Service processes payment
  • Inventory Service updates stock
  • Shipping Service creates shipment

All services must remain consistent.


Challenges of Distributed Transactions

  • Complex implementation
  • Network latency
  • Distributed debugging
  • Partial failures
  • Performance overhead

What are Partial Failures?

Example:

  • Payment succeeds
  • Inventory update fails

System enters inconsistent state unless rollback occurs.


Why Idempotency is Important

Distributed systems may retry operations multiple times.

Example

Transfer Request Processed Twice
    

Money should only transfer once.


Best Practices for Distributed Transactions

  • Use Saga Pattern for scalability
  • Implement idempotent services
  • Use reliable message brokers
  • Monitor distributed workflows
  • Implement retry mechanisms
  • Use compensation transactions carefully

Distributed Transaction vs Traditional Transaction

Feature Traditional Transaction Distributed Transaction
Database Single Database Multiple Databases
Complexity Lower Higher
Scalability Limited High
Consistency Management Simpler Complex

Professional Interview Answer

A Distributed Transaction in Microservices is a transaction that spans multiple independent services and databases where all operations must either succeed together or rollback together to maintain consistency. Since each microservice owns its own database, distributed transaction management becomes complex. Common approaches include Two-Phase Commit, Saga Pattern, TCC Pattern, and Eventual Consistency. Modern microservices architectures commonly prefer Saga Pattern and event-driven approaches for scalability and fault tolerance.


Summary

Distributed Transactions are one of the most important concepts in Microservices and Distributed Systems.

They ensure consistency across multiple independent services participating in a single business workflow.

Banking systems, e-commerce platforms, insurance applications, and cloud-native enterprise systems heavily rely on distributed transaction management for reliable business operations.

Understanding distributed transactions is essential for backend developers, cloud architects, enterprise engineers, and microservices developers building scalable distributed applications.

Why this Microservices question is important?

This interview question helps candidates understand real-time backend development concepts, practical problem solving, coding fundamentals, system design basics and production-ready application behavior.

Practice this question carefully for Java backend roles, Spring Boot developer interviews, microservices interviews, company interviews and full-stack developer preparation.

About the Author

Naresh Kumar is a Senior Java Backend Engineer with experience building enterprise applications using Java, Spring Boot, Microservices, Docker, Kubernetes and Cloud technologies.