Thanks to visit codestin.com
Credit goes to github.com

Skip to content

GrabTable/GrabTable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GrabTable

당신의 귀한 시간을 위한 식당 공유주문 및 예약 서비스, GrabTable

프로젝트 소개

사용자는 음식 선택, 주문, 결제, 예약을 모두 GrabTable에서 진행할 수 있습니다!

예약 생성 시 초대 코드가 발급되며, 해당 코드를 통해 다른 사용자를 예약에 초대하고 함께 주문할 수 있습니다.

프로젝트 아키텍처

프로젝트 기술 스택

유저 시나리오

1. 예약 생성

2. 예약 참여

3. 개인 장바구니 변경

4. 공유 장바구니 변경

5. 예약 확정

주요 기능

1. 예약 갱신 시 참여자 간 정보 최신화

자신뿐만 아니라, 예약 내 다른 사용자의 장바구니 및 결제 여부도 실시간으로 확인할 수 있어야 합니다.

변경 발생 시에만 Server Sent Event를 전송하는 구조를 채택해 기존 폴링 방식에 비해 서버 부하를 최소화했습니다.

성능에 강점이 있고 이벤트 브로드캐스팅에 유리한 Redis pubsub 메시지 큐를 활용해 분산 WAS 환경에서 이벤트가 누락되는 문제를 해결했습니다.

2. PG 연동 결제 흐름

유저들이 동시에 결제를 하는 케이스가 존재하기 때문에 결제를 시도하기 전 분산락 획들을 시도합니다. 락 획득에 실패한 요청은 바로 실패 응답을 반환합니다. 이 락은 예약의 모든 사용자가 공유하므로 동시에 여러 결제가 이루어져 추가금액 결제를 방지합니다.

분산락을 획득한 결제 요청은 임시 결제 레코드를 생성하고 결제 대행사와 검증을 거친후, 실제로 결체한 것으로 처리됩니다.

About

식당 단체 예약 서비스, GrabTable 🍽️

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6