분산 트랜잭션(Distributed Transaction)은
여러 개의 독립된 시스템이나 데이터베이스에 걸쳐 하나의 트랜잭션을 일관성 있게 처리하는 기술을 말한다.
즉, 여러 서비스나 DB에서 각각 작업이 수행되더라도, 전체가 하나의 논리적 단위로서 모두 성공하거나 모두 롤백되어야 하는 상황에서 사용된다.
트랜잭션(Transaction): 하나의 논리적 작업 단위로, ACID(Atomicity, Consistency, Isolation, Durability)를 만족해야 함
분산 트랜잭션: 이 트랜잭션이 여러 시스템(서버, DB, 마이크로서비스 등) 에 걸쳐 수행되는 경우
예시 상황)
전통적인 분산 트랜잭션 프로토콜
Coordinator(조정자)와 Participant(참여자) 개념
단계:
1단계 – Prepare Phase
2단계 – Commit Phase
➡️ 장점: 일관성 보장
➡️ 단점: 성능 저하, Coordinator 장애 시 교착 위험, 네트워크 지연 시 대기 상태 발생
2PC의 단점을 보완하려는 확장 버전
“Prepare → Pre-Commit → Commit” 3단계로 나누어 장애 대응 향상
하지만 복잡하고 실무에서 거의 사용되지 않음.
분산 트랜잭션 = 여러 시스템에서 하나의 트랜잭션처럼 처리하려는 시도
전통적 방법: 2PC (Coordinator 기반)
현대적 방법: Saga / Outbox / TCC 패턴으로 “보상 트랜잭션 + 최종 일관성” 방식 사용