1. 분산 트랜잭션이란
분산 트랜잭션은 여러개의 서비스 또는 여러 데이터베이스에 걸쳐 하나의 작업을 처리하는 트랜잭션이다.
분산 환경에서는 작업이 여러 시스템에 나뉘어 수행되기 때문에, 원래 트랜잭션이 가지는 ' 모두 성공하거나 하나라도 실패하면 전체 실패'라는 성질을 유지하기 어렵다.
2. 분산 트랜잭션에서 발생하는 문제
분산 환경에서는 작업이 여러 곳에서 나뉘어 실행되기 때문에 다음과 같은 문제가 발생할 수 있다.
- 실행 도중 일부 작업만 성공하고 다른 작업 실패할 수 있음
- 네트워크 오류나 시스템 장애로 인해 작업 중단 가능성 있음
- 서비스 간 데이터 상태가 서로 다르게 유지될 수 있음
3. 데이터일관성이란
데이터 일관성은 시스템 내 데이터가 항상 올바른 상태를 유지하는것을 의미한다.
분산 환경에서는 위에 설명한 문제로 인해 데이터 불일치가 발생할 수 있기 때문에, 이를 어떻게 유지할 것인지에 대한 기준이 필요하다. 이 기준에 따라 데이터 일관성은 다음과 같이 나뉜다.
1) 강한 일관성
- 모든 데이터가 항상 동일한 상태를 유지
- 트랜잭션 완료 즉시 모든 시스템에 반영
특징
- 정황성 높음
- 성능 저하 가능
- 분산 환경에서 구현 어려움
2) 최종 일관성
- 일정 시간이 지나면 데이터가 일관된 상태로 맞춰짐
- 즉시 일치하지 않아도 허용
특징
- 일시적인 데이터 불일치 허용
- 읽기 시점에 따라 결과가 달라질 수 있음
4. 분산 트랜잭션 해결 방식
1. 2PC ( Two-Phase Commit )
두 단계로 트랜잭션을 처리하는 방식
1단계 : 모든 참여 시스템 준비 확인
2단계 : 전체 커밋 또는 롤백 결정
특징
- 강한 일관성 보장
- 성능 저하 및 대기 문제 발생
- 장애 발생 시 전체 영향
2. Saga 패턴
분산 트랜잭션을 여러개의 독립적인 로컬 트랜잭션으로 나누어 처리하는 방식
- 각 단계는 개별적으로 실행됨
- 실패 시 이전 작업을 되돌리는 보상 로직 수행
특징
- 복잡한 흐름관리 필요
- 분산 환경에 적합
5. 2PC와 Saga 패턴의 선택 기준
위의 내용만 보면 성능 저하가 있는데 왜 2PC방식을 사용하지? 라고 생각할 수 있다.
이는 2PC가 모든 참여 시스템의 상태를 동기적으로 맞추어 강한 일관성을 보장하기 때문이다.
일부 시스템에서는 데이터의 정확성이 무엇보다 중요하기 때문에, 성능을 희생하더라도 이러한 방식을 선택할 수 있다.
반면, Saga 패턴은 최종 일관성을 기반으로 하여 비동기적으로 처리되기 때문에 성능과 확장성에 유리하다.
따라서 대부분의 분산 시스템에서는 Saga 패턴이 더 적합한 방식으로 사용된다.
'Study' 카테고리의 다른 글
| 그래프 표현, DFS/BFS, 최단경로 (0) | 2026.04.17 |
|---|---|
| 서비스 간 통신 방법 (0) | 2026.04.16 |
| 데드락 (0) | 2026.04.13 |
| 동기화 (0) | 2026.04.12 |
| 스케줄링 (0) | 2026.04.11 |