N° 01 — 목록
'Saga' (1)
-
Software Architecture/Distributed SystemsDistributed Systems - 07. 분산 트랜잭션
분산 트랜잭션 — 분산 환경에서 원자성을 어떻게 보장할까2016년 한 항공 예약 시스템에서 사용자의 예약과 결제가 분리된 서비스로 옮겨갔다. 사용자가 예약을 하면 — 예약 서비스가 좌석을 잠그고, 결제 서비스에 결제를 요청했다.어느 날 결제 서비스가 응답하다가 죽었다. 예약 서비스는 좌석을 잠갔지만, 결제가 됐는지 안 됐는지 몰랐다. 사용자는 돈은 안 빠졌는데 좌석이 잠겨 있다고 불만을 넣었다. 다른 사용자는 그 좌석을 예약하려다 실패했다. 한 트랜잭션으로 묶이지 않은 두 서비스의 변경이 — 중간 상태에 멈춘 것이다.모놀리스였다면 — 예약과 결제가 한 DB 트랜잭션에 묶여 있었다. 둘 다 성공하거나 둘 다 실패했다. 분산에선 그게 안 된다. 두 서비스가 각자 DB를 가지니 한 트랜잭션으로 묶을 수 없다...