tech/architecture

Two-Phase Commit(2PC)와 SAGA 패턴에 관하여

daniel_lab 2024. 9. 18. 13:56

두 개의 분산 트랜잭션 처리 기법인 Two-Phase Commit(2PC)Saga 패턴의 컨셉 정도만 가볍게 정리한다.

 

Two-Phase Commit(2PC) Saga 패턴 은 분산 시스템에서 데이터 일관성을 유지하기 위한 여러 방법들중 대표적인 2가지 이다.

 

먼저, Two-Phase Commit은 분산 트랜잭션을 원자적으로 처리하기 위한 프로토콜로, 트랜잭션이 성공적으로 완료되었는지 여부를 모든 관련 노드가 합의하는 절차를 가진다. 2PC는 두 가지 단계로 나뉜다. 첫 번째 단계에서는 모든 노드가 트랜잭션을 커밋할 준비가 되었는지 확인하고, 두 번째 단계에서는 준비가 된 경우 트랜잭션을 실제로 커밋하거나 실패한 경우 롤백을 진행한다. 이 방식은 일관성을 보장하지만, 장애 발생 시 시스템이 오랫동안 블로킹될 수 있다는 단점이 있다.

 

반면에, Saga 패턴은 트랜잭션을 여러 개의 작은 하위 트랜잭션으로 분리하고, 각 하위 트랜잭션이 독립적으로 커밋되도록 하여 분산 시스템에서 보다 유연한 트랜잭션 관리를 가능하게 한다. 각 하위 트랜잭션이 성공적으로 수행되지 못할 경우, 이전에 완료된 트랜잭션을 보상하는 방식으로 롤백이 이루어진다. Saga 패턴은 비동기 환경에서 특히 유용하며, 시스템이 블로킹되지 않고 계속해서 동작할 수 있도록 돕는다.