TCC(Try-Confirm/Cancel)는 분산된 REST 시스템들 간의 트랜잭션을 HTTP와 REST 원칙으로 접근하여 해결하는 방법이다.

미국으로 여행을 가게 되었고 비행기와 숙박 업체에 예약을 진행한다고 가정해보자.

동작 과정

1. 항공사에 HTTP POST 요청으로 비행기 표를 예약한다.

2. 항공사는 확정을 위한 URI와 확정 만료 시간인 Expiration을 발급한다.

3. 이후 숙박 업체에 HTTP POST 요청으로 객실을 예약한다.

4. 숙박 업체는 객실 예약 확정을 위한 URI와 확정 만료 시간인 Expiration을 발급한다.

5.2개의 예약이 모두 성공적으로 진행된 경우 각각의 URI에 HTTP PUT 요청을 통해 예약을 확정한다.

 

장점

2개의 예약 중 1개의 예약이 실패하더라도 Expiration이 있기 때문에 아무런 동작을 취하지 않아도 시간이 지나면 자동으로 예약이 취소되게 된다.

즉, 각 트랜잭션에 대해 반자동화가 가능하다.

 

문제점

한 번 트랜잭션이 성공되고 나면 Rollback이 어려운 단점이 있다.

Expiration이 정해져 있기 때문에 특정한 경우 A의 트랜잭션은 성공하고 B의 트랜잭션이 실패할 수도 있다.

위와 같은 경우 모두 관리자의 통제가 필요하다는 단점이 있다.

 

https://dzone.com/articles/transactions-for-the-rest-of-us

https://blusky10.tistory.com/358