📃3 | 새벽 3시 기차 예매가 풀리는 타임
개발자 혈육과의 만담을기록합니다.
새벽 3시 기차 예매가 풀리는 타임
배경 :: 주말 오전 기차를 예매하기 위해 기차 취소표가 풀린다는 새벽 3시 대기 중 기차표가 순차적으로 풀리기 시작한다.
주제 :: 왜 기차표가 일괄적으로 풀리지 않고, 순차적으로 풀릴까? (난 빨리 기차 예매하고 자고 싶은걸..)
내용 ::
🖱️기획자 나 : 그럼 왜 KTX가 먼저 풀리고 한참 후에나 새마을호, 무궁화호 이렇게 풀리잖아. 일괄적으로 풀릴 순 없나?
💻 개발자 혈육 : 대용량 DB 때문에 딜레이가 생겨서 그럴 수도 있고, 연산 문제로 트렌잭션 때문에 되돌아가서 오래걸리는 거 일 수도 있지.
🖱️기획자 나 : 아 그렇네 내가 예매하려는 기차 말고 예매가능한 전체 날짜의 취소표가 풀리니까 양이 많겠구나. 풀리는 순서는 코레일에서 서비스 정책으로 정해놨을테고.
(취소표가 풀리는게 실패되면 다시 되돌아가서 트렌젝션이라고 한건가? 아니 결제를 실패할때?)
... (대화 종료)
기차표가 풀리는 시간에 이렇게나 많은 정책과 설계가 있었으리라 생각을 해본 적이 없었는데, 이번 기회를 통해 기획적 측면에서 생각해 볼 수 있었다.
취소표가 풀리는 것에 대한 코레일의 정책을 파악해 봤는데
1️⃣ 취소표에 대한 DB처리 시간은 3시
2️⃣ KTX - ITX - 무궁화호 순으로 처리 (구간과 날짜는 파악 불가)
3️⃣ 취소표를 포함한 좌석이 모두 판매된 경우, 일정 수량의 좌석만 '예약 대기' 가능
간단하게 정리하면 이정도? 정책을 세웠던 사람인데 마냥 언제 풀리나 한탄하고 있던 것에 약간의 부끄러움...
정책을 세우는 것에 얼마나 노고가 걸렸을지 알기에
취소표가 풀리는 것에 대한 트렌잭션을 잘 모르겠다! 아마 타인이 결제를 실패하면 풀리면서 또 DB가 새로고침 될 수도 있다는게 아닐까라 생각한다.
'트렌잭션'을 처음들어보는 사람들을 위해 간단하게 설명하자면,
#️⃣ 트렌잭션(Transaction)
: DB의 상태를 변경시키는 작업단위. 쉽게 말해 하나의 단위로 함께 처리되어야만하는 최소한의 단위.
간단한 예시로는 기차표를 구매 결제를 해야만 기차 승차권이 부여되는 것을 들 수 있다.
서비스 정책도 생각해보고 트렌잭션에 대해도 다시 공부해보는 만담 3편 마무리 -