트랜잭션 ACID
ACID는 데이터베이스 트랜잭션의 속성을 나타내는 네 가지 기본적인 특성을 나타내는 약어입니다. MSA에서는 분산 환경에서의 트랜잭션 일관성을 유지하기 위해 이러한 ACID 특성을 어떻게 다룰지 고민해야 합니다.
ACID 특성
1. 원자성 (Atomicity)
트랜잭션은 원자 단위로 수행되어야 합니다. 즉, 트랜잭션 내의 모든 연산이 성공하면 전체 트랜잭션이 성공하고, 하나라도 실패하면 전체 트랜잭션이 실패해야 합니다.
2. 일관성 (Consistency)
트랜잭션이 수행된 후에는 데이터베이스가 일관된 상태에 있어야 합니다. 트랜잭션 전과 트랜잭션 후의 데이터베이스 상태는 일관성이 있어야 합니다.
3. 고립성 (Isolation)
동시에 실행되는 여러 트랜잭션이 서로에게 영향을 미치지 않도록 보장해야 합니다. 한 트랜잭션이 수행 중일 때, 다른 트랜잭션에서는 그 수행 중인 트랜잭션의 결과를 볼 수 없어야 합니다.
4. 지속성 (Durability)
트랜잭션이 성공적으로 완료된 후에는 그 결과가 영구적으로 저장되어야 합니다. 시스템이 고장나거나 재시작되더라도 트랜잭션의 결과는 유지되어야 합니다.
MSA에서는 ACID 문제
1. 일관성과 고립성 문제
분산된 데이터 저장소와 서비스 간 통신으로 인해 ACID의 일관성과 고립성을 동시에 보장하기 어렵습니다. 서비스 간에 일관된 상태를 유지하려면 추가적인 동기화 메커니즘이 필요합니다.
2. 원자성 보장의 어려움
모든 마이크로서비스의 트랜잭션을 원자적으로 수행하는 것이 어렵습니다. 일부 서비스의 실패가 전체 트랜잭션에 영향을 미칠 수 있습니다.
MSA에서의 ACID 문제 해결 방안
MSA에서는 ACID를 완전히 유지하기 어려울 수 있으므로, 분산 시스템에 적합한 접근 방식을 선택해야 합니다. 이벤트 소싱, CQRS, 비동기 메시징 등의 패턴을 사용하여 트랜잭션 일관성을 유지하고, 느슨하게 결합된 서비스 간의 상호 작용을 관리할 수 있습니다.
'인프라 > MSA' 카테고리의 다른 글
[MSA] 분산 트랜잭션 - 보상 트랜잭션 (0) | 2023.12.19 |
---|---|
[MSA] 분산 트랜잭션 - 2PC (0) | 2023.12.18 |
[MSA] Hexagonal Architecture (0) | 2023.12.07 |
[MSA] MSA가 어려운 이유 (0) | 2023.12.01 |
[MSA] MSA의 핵심 원칙 (0) | 2023.11.30 |