PostgreSQL 공식 문서에서는 트랜잭션을 아래와 같이 설명하고 있다.
Transactions are a fundamental concept of all database systems. The essential point of a transaction is that it bundles multiple steps into a single, all-or-nothing operation.
트랜잭션은 모든 데이터베이스 시스템의 핵심 개념이다. 트랜잭션의 중요한 점은 여러 단계를 하나의 "전부 실행" 또는 "전혀 실행하지 않음" 방식의 작업으로 묶어 처리한다는 데 있다.
트랜잭션 시작: 데이터베이스와의 작업이 시작
작업 수행: 데이터 삽입, 업데이트, 삭제 등 여러 작업이 순차적으로 실행
커밋/롤백 결정: 모든 작업이 성공적으로 완료되면 커밋하여 변경사항을 확정, 하나라도 실패하면 롤백하여 모든 변경사항을 취소
트랜잭션 종료: 트랜잭션 종료, 자원들 해제
SAGA 패턴은 마이크로서비스 아키텍처에서 분산 트랜잭션을 관리하기 위한 패턴이다. 트랜잭션을 여러 단계로 나누어 각 단계가 독립적으로 성공하거나 실패할 수 있도록 한다. 각 단계에서 오류가 발생하면 이전 단계에서 수행한 작업을 취소(롤백)하여 일관성을 유지한다.
장점:
단점:
1️⃣ Choreography
2️⃣ Orchestration
✳️ 보상 트랜잭션
보상 트랜잭션(Compensating Transaction)은 트랜잭션 처리 과정에서 발생한 오류를 해결하고 시스템의 일관성을 유지하기 위해 실행되는 "되돌리기(롤백)" 작업이다. 특히 분산 시스템이나 마이크로서비스 아키텍처에서는 각 서비스가 독립적으로 실행되고 데이터 일관성을 유지하는 것이 중요하기 때문에, SAGA 패턴과 같은 방식에서 자주 사용된다.
특징