시리즈 목적
트랜잭션은 여러 작업을 논리적인 하나의 작업처럼 동작하게 한다.
그 덕분에 데이터의 정합성은 높아지고 안정성과 신뢰성을 확보 할 수 있다.
하지만 트랜잭션은 강결합을 유발한다. 개발에서 항상 논해지는 트레이드 오프가 여기서도 발생하는 것이다.
현대의 시스템은 추상화를 통한 약한 결합이 중요하다. 그래야 서로 의존성이 적어 분리하기 쉽고 유지보수에도 용의하기 때문이다.
트랜잭션 또한 분산환경에서 약결합하기 위한 다양한 방법이 존재한다.
- 2중 커밋 (Two-Phase Commit, 2PC)
- Saga 패턴
- 로컬 트랜잭션 (Local Transactions)
- 이벤트 소싱 (Event Sourcing)
- 최종 일관성 (Eventual Consistency)
이 외에도 다양한 방식으로 존재하며, 이러한 방법은 모두 장점과 한계가 존재한다.
백엔드 영속화 과정에서 트랜잭션은 빠질 수 없는 요소이다.
때문에 MSA 같은 분산형 아키텍처에서 트랜잭션을 유연하게 해결하기 위한 노력은 이어지고 있다.
그리고 이러한 문제를 해결하는 기반은 결국 기본기라고 생각한다.
때문에 트랜잭션에 대한 기본기를 다지기 위해 이 시리즈를 정리하기로 하였다.
정리하는 글의 토대는 "데이터 중심 애플리케이션 설계"을 참조한다.
'{시리즈} > 트랜잭션' 카테고리의 다른 글
3. 트랜잭션 사용 방법과 어보트 처리 (0) | 2023.08.29 |
---|---|
2. 트랜잭션에서 안정성을 의미하는 ACID (0) | 2023.08.21 |
1. 트랜잭션이란? (0) | 2023.08.21 |