728x90
반응형
1. 분산 트랜잭션이란?
- 정의: 네트워크로 연결된 여러 개의 독립된 데이터베이스(또는 시스템)에 걸쳐 실행되는 하나의 논리적인 작업 단위입니다.
- 모놀리식 환경: 하나의 커넥션 안에서 여러 테이블을 수정하므로 DB의 ACID 원칙을 그대로 활용할 수 있습니다.
- MSA 환경: 서비스마다 DB가 다르기 때문에, 하나의 비즈니스 로직(예: 주문)을 처리하려면 여러 DB의 데이터를 동시에 변경해야 합니다. 이 과정에서 네트워크 장애, 특정 서버 다운 등으로 인해 데이터가 불일치할 위험이 항상 존재합니다.
2. 데이터 일관성(Consistency)의 두 가지 관점
분산 시스템에서는 일관성을 바라보는 기준이 전통적인 단일 DB와 다릅니다.
① 강한 일관성 (Strong Consistency)
- 개념: 어떤 데이터가 변경되면, 시스템을 바라보는 모든 사용자가 그 즉시 변경된 동일한 데이터를 보아야 한다는 원칙입니다. 데이터가 완전히 동기화되기 전까지는 읽기/쓰기가 차단될 수 있습니다.
- 특징: 데이터의 정확성이 최우선인 금융, 결제 시스템 등에 필수적입니다.
- 구현 기법: 2PC(Two-Phase Commit), 전역 락(Global Lock) 등이 있습니다.
② 최종 일관성 (Eventual Consistency)
- 개념: 데이터가 변경되었을 때 일시적으로는 서비스 간 데이터가 불일치할 수 있지만, 시간이 지나면(결국에는) 모든 시스템의 데이터가 일치하게 된다는 원칙입니다.
- 특징: 성능과 가용성이 중요한 현대 대규모 웹 서비스(SNS, 이커머스 등)의 표준 모델입니다.
- 구현 기법: Saga 패턴, 이벤트 기반 아키텍처(EDA) 등이 있습니다.
3. 분산 시스템의 한계: CAP 이론
분산 데이터 시스템은 C(일관성), A(가용성), P(분할 허용성) 세 가지 속성을 동시에 모두 만족할 수 없다는 이론입니다.
- Consistency (일관성): 모든 노드가 동시에 같은 데이터를 보아야 합니다 (강한 일관성).
- Availability (가용성): 특정 노드가 다운되어도 시스템은 언제나 요청에 응답해야 합니다.
- Partition Tolerance (분할 허용성): 노드 간 네트워크가 끊어지거나 메시지가 유실되어도 시스템은 멈추지 않고 동작해야 합니다.
💡 MSA에서의 현실적인 선택: CP vs AP
네트워크 장애(P)는 분산 환경에서 언제든 발생할 수 있는 불가항력입니다. 따라서 우리는 CP와 AP 중 하나를 선택해야 합니다.
- CP 시스템 (Consistency + Partition Tolerance): 네트워크 장애 발생 시, 데이터 불일치를 막기 위해 가용성을 포기하고 에러를 리턴하거나 응답을 차단합니다. (예: 은행 송금 차단)
- AP 시스템 (Availability + Partition Tolerance): 네트워크 장애가 나더라도 일단 무조건 응답(가용성)을 제공하고, 데이터는 나중에 맞추기를 택합니다. (예: 인스타그램 좋아요 반영 지연)
MSA의 방향성: BASE
대부분의 마이크로서비스는 대규모 트래픽과 서비스 가용성을 위해 AP 시스템을 지향하며, ACID 대신 BASE 모델을 따릅니다.
- Basically Available (기본적인 가용성 보장)
- Soft State (유연한 중간 상태 보유 - 데이터가 동기화 중일 수 있음)
- Eventual Consistency (최종 일관성 달성)
4. 분산 트랜잭션 해결을 위한 기술적 아키텍처
① 2PC (Two-Phase Commit) — CP 지향
중앙 코디네이터가 모든 노드에게 1단계로 "준비됐니?(Prepare)" 물어보고, 모두가 Ok 하면 2단계로 "커밋해!(Commit)" 명령하는 방식입니다.
문제점: 하나의 노드만 응답이 늦어도 모든 DB에 락(Lock)이 걸려 시스템 전체가 마비됩니다. 현대 MSA에서는 거의 쓰이지 않습니다.
② Saga 패턴 — AP 지향
작업을 로컬 트랜잭션 단위로 쪼개어 순차적으로 실행하고, 실패 시 역순으로 보상 트랜잭션(취소 작업)을 실행하여 최종 일관성을 맞추는 방식입니다.
- 종류: 중앙 제어 방식의 오케스트레이션(Orchestration), 이벤트 발행/구독 방식의 코레오그래피(Choreography)가 있습니다.
③ 멱등성(Idempotency) 보장
네트워크 타임아웃 등으로 인해 클라이언트가 동일한 요청을 여러 번 재시도하더라도, 시스템에 부작용이 없이 항상 같은 결과가 나와야 하는 성질입니다.
구현: API 요청 시 고유한 Idempotency-Key(예: UUID)를 함께 보내, 서버가 이미 처리한 Key라면 중복 연산을 하지 않고 기존 결과를 그대로 반환하게 처리합니다.
5. 한눈에 보는 요약

반응형
'Study' 카테고리의 다른 글
| [내일배움캠프 TIL] Spring Cloud Config Server 설정 파일 관리 방식: Native vs Git 분리 (우리의 선택과 기술적 명분) (0) | 2026.06.11 |
|---|---|
| [내일배움캠프 TIL] 마이크로서비스(MSA) 간 통신 방법 총정리 (0) | 2026.06.10 |
| [내일배움캠프 TIL] MSA 총정리 (0) | 2026.06.08 |
| [내일배움캠프 TIL] SAGA 패턴 (0) | 2026.06.05 |
| 면접과 탈락까지 후기(넋두리..) : 끝날때 까지 끝난게 아니다.. (0) | 2026.06.05 |