1. 2PC (Two-Phase Commit)
- 코디네이터와 여러 데이터베이스 간의 합의를 통해 트랜잭션 커밋/롤백을 결정하는 방법이다.
- phase1 : 모든 데이터베이스가 커밋이 가능한 상태 또는 불가능한 상태를 코디네이터에게 전달
- phase2 : 코디네이터가 커밋 또는 롤백을 수행한다.
- 장점
- 분산 환경에서의 데이터 정합성 및 원자성을 보장할 수 있다.
- 단점
- 미지원 DBMS - 미지원 DBMS 인 경우, 사용이 불가하다.
- 이종 데이터베이스 호환성 - 이종(heterogeneous) 데이터베이스 환경에서 사용에 어려움이 있음
- 코디네이터에 의존적 - 장애 상황에 따른 각 데이터베이스의 커밋/롤백 여부를 스스로 결정할 수 없음
- 트랜잭션 블로킹(blocking) - 다른 데이터베이스 트랜잭션이 완료될 때까지 대기해야 하는 경우가 발생할 수 있음

2. SAGA Pattern
(1) SAGA Pattern??
1. 연속된 개별 서비스의 로컬 트랜잭션을 구성하고 트리거를 통해 전체 비즈니스 트랜잭션을 구성한다.
예시) 1번째 트랜잭션 완료 + 2번째 트랜잭션 트리거 → 2번째 트랜잭션 완료 + 3번째 트랜잭션 트리거 → 3번째 트랜잭션 완료
2. 개별 서비스가 실패하면 보상 트랜잭션(compensating transaction) 을 발생시킨다.
예시) 3번 트랜잭션 실패 → 2번째 트랜잭션 상쇄 로직 실행 → 1번째 트랜잭션 상쇄 로직 실행

(2) DBMS 지원 트랜잭션과 SAGA 패턴의 차이점

3. SAGA Pattern 종류
(1) SAGA Pattern : Choreography-Based Saga
- 각 서비스가 이벤트를 통해 서로 통신하며 트랜잭션을 관리하는 방식
- 중앙 조정자(Coordinator) 가 존재하지 않으며, 이벤트가 발생할 때 다음 서비스가 이벤트를 수신하여 작업을 처리

- 동작 과정
- 서비스 A가 트랜잭션을 실행하고 완료 후 이벤트를 발행한다.
- 서비스 B가 이벤트를 수신하고 자신의 트랜잭션을 실행한다.
- 이벤트 흐름이 계속 전파되며, 모든 서비스가 자신의 트랜잭션을 처리한다.
- 어느 한 서비스가 실패하면 이전 서비스들이 보상 트랜잭션을 실행한다.
- 장점
- 중앙 조정자 없이 동작하여 시스템의 확장성이 뛰어남.
- 비동기 메시징 기반으로 성능 향상.
- 마이크로서비스 독립성이 유지됨.
- 단점
- 이벤트 흐름 추적이 어려워 디버깅 및 모니터링이 복잡함.
- 모든 서비스가 이벤트 처리 로직을 구현해야 함.
(2) SAGA Pattern : Orchestration-Based Saga
- 중앙 조정자(Coordinator)가 전체 트랜잭션을 관리하고, 각 서비스에 명령을 전달하며 트랜잭션을 처리합니다.
- 조정자는 트랜잭션의 성공 또는 실패를 결정하고 보상 트랜잭션을 요청합니다.

- 동작 과정
- Coordinator 가 트랜잭션의 시작과 흐름을 제어한다.
- 각 서비스는 조정자의 명령에 따라 트랜잭션을 실행하고 결과를 응답한다.
- 서비스 중 하나가 실패하면, 조정자가 보상 트랜잭션을 실행한다.
- 장점
- 중앙 집중 관리로 트랜잭션 흐름이 명확하며, 디버깅 및 모니터링이 용이.
- 오류 처리 및 보상 작업이 더 쉬움.
- 단점
- Coordinator가 단일 장애 지점(Single Point of Failure) 이 될 수 있음.
- 중앙 집중형으로 인해 확장성이 제한될 수 있음.
4. Reference
'architecture' 카테고리의 다른 글
레이어드 아키텍처 (그런데, clean architecture를 곁들인) (0) | 2024.12.27 |
---|---|
[데이터 중심 애플리케이션 설계] 스트림 프로세싱 (0) | 2024.07.01 |
[데이터 중심 애플리케이션 설계] 일관성과 합의 (0) | 2024.06.19 |
[데이터 중심 애플리케이션 설계] 분산 시스템의 골칫거리 (1) | 2024.06.08 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 호텔 예약 시스템 (0) | 2024.05.21 |
1. 2PC (Two-Phase Commit)
- 코디네이터와 여러 데이터베이스 간의 합의를 통해 트랜잭션 커밋/롤백을 결정하는 방법이다.
- phase1 : 모든 데이터베이스가 커밋이 가능한 상태 또는 불가능한 상태를 코디네이터에게 전달
- phase2 : 코디네이터가 커밋 또는 롤백을 수행한다.
- 장점
- 분산 환경에서의 데이터 정합성 및 원자성을 보장할 수 있다.
- 단점
- 미지원 DBMS - 미지원 DBMS 인 경우, 사용이 불가하다.
- 이종 데이터베이스 호환성 - 이종(heterogeneous) 데이터베이스 환경에서 사용에 어려움이 있음
- 코디네이터에 의존적 - 장애 상황에 따른 각 데이터베이스의 커밋/롤백 여부를 스스로 결정할 수 없음
- 트랜잭션 블로킹(blocking) - 다른 데이터베이스 트랜잭션이 완료될 때까지 대기해야 하는 경우가 발생할 수 있음

2. SAGA Pattern
(1) SAGA Pattern??
1. 연속된 개별 서비스의 로컬 트랜잭션을 구성하고 트리거를 통해 전체 비즈니스 트랜잭션을 구성한다.
예시) 1번째 트랜잭션 완료 + 2번째 트랜잭션 트리거 → 2번째 트랜잭션 완료 + 3번째 트랜잭션 트리거 → 3번째 트랜잭션 완료
2. 개별 서비스가 실패하면 보상 트랜잭션(compensating transaction) 을 발생시킨다.
예시) 3번 트랜잭션 실패 → 2번째 트랜잭션 상쇄 로직 실행 → 1번째 트랜잭션 상쇄 로직 실행

(2) DBMS 지원 트랜잭션과 SAGA 패턴의 차이점

3. SAGA Pattern 종류
(1) SAGA Pattern : Choreography-Based Saga
- 각 서비스가 이벤트를 통해 서로 통신하며 트랜잭션을 관리하는 방식
- 중앙 조정자(Coordinator) 가 존재하지 않으며, 이벤트가 발생할 때 다음 서비스가 이벤트를 수신하여 작업을 처리

- 동작 과정
- 서비스 A가 트랜잭션을 실행하고 완료 후 이벤트를 발행한다.
- 서비스 B가 이벤트를 수신하고 자신의 트랜잭션을 실행한다.
- 이벤트 흐름이 계속 전파되며, 모든 서비스가 자신의 트랜잭션을 처리한다.
- 어느 한 서비스가 실패하면 이전 서비스들이 보상 트랜잭션을 실행한다.
- 장점
- 중앙 조정자 없이 동작하여 시스템의 확장성이 뛰어남.
- 비동기 메시징 기반으로 성능 향상.
- 마이크로서비스 독립성이 유지됨.
- 단점
- 이벤트 흐름 추적이 어려워 디버깅 및 모니터링이 복잡함.
- 모든 서비스가 이벤트 처리 로직을 구현해야 함.
(2) SAGA Pattern : Orchestration-Based Saga
- 중앙 조정자(Coordinator)가 전체 트랜잭션을 관리하고, 각 서비스에 명령을 전달하며 트랜잭션을 처리합니다.
- 조정자는 트랜잭션의 성공 또는 실패를 결정하고 보상 트랜잭션을 요청합니다.

- 동작 과정
- Coordinator 가 트랜잭션의 시작과 흐름을 제어한다.
- 각 서비스는 조정자의 명령에 따라 트랜잭션을 실행하고 결과를 응답한다.
- 서비스 중 하나가 실패하면, 조정자가 보상 트랜잭션을 실행한다.
- 장점
- 중앙 집중 관리로 트랜잭션 흐름이 명확하며, 디버깅 및 모니터링이 용이.
- 오류 처리 및 보상 작업이 더 쉬움.
- 단점
- Coordinator가 단일 장애 지점(Single Point of Failure) 이 될 수 있음.
- 중앙 집중형으로 인해 확장성이 제한될 수 있음.
4. Reference
'architecture' 카테고리의 다른 글
레이어드 아키텍처 (그런데, clean architecture를 곁들인) (0) | 2024.12.27 |
---|---|
[데이터 중심 애플리케이션 설계] 스트림 프로세싱 (0) | 2024.07.01 |
[데이터 중심 애플리케이션 설계] 일관성과 합의 (0) | 2024.06.19 |
[데이터 중심 애플리케이션 설계] 분산 시스템의 골칫거리 (1) | 2024.06.08 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 호텔 예약 시스템 (0) | 2024.05.21 |