Study

분산 트랜잭션과 데이터 일관성

kinim329 2026. 4. 14. 01:00

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