트랜잭션은 경계가 명확할 때만 강력하다단일 데이터베이스에서의 트랜잭션은 매우 강력하다. 원자성, 일관성, 격리성, 지속성이라는 명확한 약속이 있다.하지만 시스템 경계를 넘는 순간, 이 약속은 급격히 약해진다.분산 트랜잭션의 문제는 구현 난이도가 아니라 전제가 깨진 환경에서 동일한 약속을 요구하는 데서 시작된다.분산 트랜잭션이 필요한 순간다음과 같은 요구가 등장할 때, 사람들은 분산 트랜잭션을 떠올린다.여러 서비스의 상태를 한 번에 변경해야 한다메시지 처리와 DB 변경을 동시에 보장해야 한다중간 실패 없이 일관된 결과를 만들고 싶다문제는 이 요구들이 앞서 살펴본 모든 실패 전제와 충돌한다는 점이다.2PC는 무엇을 약속하는가Two-Phase Commit(2PC)는 분산 트랜잭션의 가장 대표적인 프로토콜이다...