1. 분산 트랜잭션의 이해
- 분산 트랜잭션은 2개 그 이상의 네트워크 상의 시스템 간의 트랜잭션입니다.
- 일반적으로 시스템은 트랜잭션 리소스의 역할을 하고, 트랜잭션 매니저는 이러한 리소스에 관련된 모든 동작에 대해 트랜잭션의 생성 및 관리를 담당합니다.
트랜잭션 리소스(Transaction Resource)
- 데이터베이스, 메시지 큐 등 실제 데이터를 저장하고 처리하는 시스템
- 로컬에서 커밋이나 롤백 등의 트랜잭션 연산을 수행할 수 있는 능력 보유
- 예: MySQL 데이터베이스, RabbitMQ 메시지 브로커, MongoDB 등
트랜잭션 매니저(Transaction Manager)
- 여러 트랜잭션 리소스들을 조율하여 하나의 논리적 트랜잭션으로 관리
- 전체 트랜잭션의 시작, 커밋, 롤백을 결정하고 실행
- 각 리소스의 상태를 모니터링하고 문제 발생 시 복구 처리
- 예: Java의 JTA 트랜잭션 매니저, 분산 트랜잭션 코디네이터
1.1 마이크로서비스 아키텍처와 분산 트랜잭션
- 마이크로서비스 아키텍처(MSA)는 대표적인 분산 트랜잭션 환경입니다.
- MSA의 주요 특징 중 하나인 'Database per Service' 패턴으로 인해 다음과 같은 장점을 제공합니다:
- 각 서비스는 독립적인 데이터베이스에서 자신의 데이터를 관리
- 서비스별로 최적화된 데이터베이스 선택 가능 (예: 주문 이력은 MongoDB, 결제는 MySQL)
- 다른 서비스의 장애로부터 데이터 보호
- 서비스 간 낮은 결합도 유지
- 하지만 이러한 데이터베이스 분리는 비즈니스 트랜잭션 처리를 복잡하게 만듭니다.