Transaction이란
- 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위
- 4가지의 특성
- 원자성
- 일관성
- 독립성
- 지속성
Transaction 처리
- 기존 Monolithic Architecture 에서는 DBMS의 transaction 기능으로 데이터 commit이나 rollback을 일관적으로 처리
- 첫 번째 대안 : Two Phase Commit
- 한 서비스에서 장애가 발생하거나 각 서비스에서 Lock이 걸리면 성능 이슈 있어 비효율적
- 서비스 별 인스턴스가 분리되어 관리에 어려움이 있음
SAGA 패턴
- 마이크로 서비스 아키텍처에서 서비스들끼리 이벤트를 주고 받아 특정 서비스에서 작업이 실패하면 이전까지의 작업이 완료된 서비스에게 보상(complimentary) 이벤트를 소싱하여 분산 환경에서 원자성(atomicity)를 보장하는 패턴
- 트랜잭션 성공 시
- 트랜잭션 실패 시
- 트랜잭션 관리 주체가 DBMS가 아닌 Application에 있음.
SAGA 패턴의 종류
- Choreography based SAGA pattern
- 각각의 로컬 트랜잭션이 다른 microservice를 이벤트로 소싱하는 방식
- 구현이 쉽고 간단하고, 도메인간 종속성이 낮은 것이 장점
- 어떤 서비스가 어떤 이벤트를 수신하는지 추측이 어렵고, 트랜잭션이 많은 서비스의 경우 문제상활 발생 시 추적이 어려운 것이 단점
- Orchestration based SAGA pattern
- 분산 트랜잭션을 관리하는 orchestrator가 존재하여 여러 트랜잭션을 관리하는 형태
- 트랜잭션을 한눈에 관리할 수 있고, 순서가 있는 트랜잭션을 구현 가능하며 보상 트랜잭션을 쉽게 관리 가능한 것이 장점
- 중앙집중적 형태이므로 도메인 커플링이 높아지고, 모든 트랜잭션을 orchestrator가 관리하기 때문에 로직이 복잡해지는 것이 단점
Reference
'Cloud Architecture' 카테고리의 다른 글
Proxy / Forward Proxy / Reverse Proxy (0) | 2022.06.15 |
---|---|
TCP, UDP, TCP Window Size (0) | 2022.06.15 |
TDD, BDD, DDD (0) | 2022.06.14 |
Circuit Breaking (0) | 2022.06.14 |
Micro Service Architecture (0) | 2022.06.14 |