1. 로그인


JWT

Refresh Token 관리

이메일 로그인

소셜 로그인 - 사장님과 손님 소셜 로그인 방식 통일

2. 예약


한번에 들어오는 예약을 처리하기 위한 방법?

<aside> 💡

락(Lock)이란?

여러 트랜잭션이 동시에 데이터에 접근할 때 데이터의 일관성과 무결성을 보장하기 위한 메커니즘.

ex. 4,000원이 있는 계좌에 A와 B가 동시에 3,000원을 입금할 때, 최종 금액이 10,000원이 아닌

7,000원이 되는 문제를 방지.

</aside>

  1. 분산 락

    장점

    단점

  2. JPA Lock

    낙관적 락(optimistic lock)

    동작 방식

    1. 데이터를 읽을 때는 락을 걸지 않음
    2. 데이터 수정 시 버전을 확인하여 충돌을 감지

    비관적 락(pessimistic lock)

    동작 방식

    1. 트랜잭션이 완료될 때까지 다른 트랜잭션의 접근을 막음
    2. 데이터를 읽을 때부터 락

    장점

    단점

    <aside> 💡

    데드락이란?

    둘 이상의 프로세스가 서로가 가진 자원을 기다리며 무한히 대기하는 상황.

    </aside>

    선택 기준

  3. 큐 시스템

    장점

    단점

  4. synchronized

  5. AOP(Aspect-Oriented Programming)를 이용한 락

  6. 그 외

결론

테이블 예약의 동시성을 제어하기 위해 JPA Lock의 비관적 락 채택.

인기 있는 테이블의 동시 접근이 많아 충돌 상황에 효과적.

낙관적 락과 달리, 충돌 시 자동으로 대기하므로 별도의 재시도 로직이 필요 없음.

예약 시 짧은 시간에 충돌이 많을 것을로 예상하여 일관성을 위해 비관적 락을 사용함.

오버헤드 주의.

데드락 발생하지 않도록 주의.

락 범위 최소화.

무한대기 방지를 위한 타임아웃 설정.

3. 실시간 통신


예약 후 식당과 회원간의 1대1 채팅을 위한 방법?

사장님이 한번에 여러 손님들에게 공지를 하는 방법

예약 후 바로 알러지 여부를 물어보는 자동 설문지 등록