패스잇
시스템 설계 · 중급

분산 트랜잭션을 처리하기 위한 2단계 커밋(Two-Phase Commit, 2PC) 프로토콜의 동작 원리와 한계점을 설명하고, 이를 보완할 수 있는 다른 패턴(예: Saga 패턴)에 대해 간략히 설명해 주세요.

힌트 · 2PC는 모든 참여자가 동의해야 커밋하며 단일 장애점, 블로킹 문제 등의 한계가 있습니다. Saga 패턴은 각 로컬 트랜잭션을 보상 트랜잭션으로 롤백하여 분산 트랜잭션을 관리합니다.

2PC준비커밋/롤백ACIDSaga

모범답안

분산 트랜잭션을 처리하는 2단계 커밋(2PC)은 여러 참여 노드에 걸쳐 트랜잭션의 ACID 속성을 보장하는 프로토콜입니다. 먼저, 트랜잭션 매니저가 모든 참여자에게 준비(Prepare) 요청을 보내고, 각 참여자는 트랜잭션을 준비하고 결과를 응답합니다. 모든 참여자가 준비에 성공하면 커밋(Commit) 요청을 보내 트랜잭션을 완료하고, 하나라도 실패하면 롤백(Rollback) 요청을 보냅니다.

2PC는 단순하지만 단일 장애점과 블로킹 문제가 있습니다. 트랜잭션 매니저가 다운되면 전체 시스템이 멈출 수 있고, 특정 참여자가 응답하지 않으면 다른 참여자들도 무한정 기다려야 합니다.

이러한 단점을 보완하기 위해 Saga 패턴을 사용할 수 있습니다. Saga 패턴은 각 서비스가 로컬 트랜잭션을 수행하고, 실패 시 보상 트랜잭션을 통해 롤백하는 방식으로 분산 트랜잭션을 관리합니다. 2PC와 달리 모든 참여자가 동시에 합의할 필요가 없어 가용성이 높지만, 데이터 정합성을 완벽하게 보장하기는 어렵습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 분산 시스템 면접 질문

← 분산 시스템 면접 질문 전체 보기