분산 시스템에서 Saga 패턴과 멱등성으로 무결성 유지
대규모 분산 시스템에서 데이터 무결성은 단일 트랜잭션이 불가능한 환경에서 어떻게 일관성을 보장하는가의 문제다. 프로젝트에서 사용한 전략은 크게 두 가지다. 첫째는 Saga 패턴으로, 여러 서비스에 걸친 긴 트랜잭션을 각 단계로 나누고, 중간에 실패하면 이전 단계를 보상하는 보상 트랜잭션으로 롤백하는 방식이다. 둘째는 멱등성 보장이다. 네트워크 오류로 같은 요청이 두 번 올 때 중복 처리가 생기지 않도록, 각 요청에 고유 ID를 달고 이미 처리된 ID는 무시하는 로직을 넣었다. 실제로 주문 서비스와 재고 서비스가 분리된 구조에서 결제 성공 후 재고 차감이 실패하는 케이스를 처리할 때 이 두 가지를 결합해 일관성을 유지했다. 완벽한 ACID를 포기하는 대신 최종 일관성을 허용하면서도 비즈니스 규칙을 지키는 균형이 분산 시스템 설계의 핵심이라고 생각한다.