

:git: 소스 코드
📋 요약
- 티켓팅 서비스를 제공하며 Spring Boot를 기반으로 서버를 개발했습니다. 백엔드 파트로서 좌석 선점 기능, 예매 기능, 결제 기능 개발을 담당하였습니다.
🔨 기술 스택
- Java + Spring Boot + Spring JPA 를 사용하여 백엔드 서버 개발
- Redis 를 사용하여 좌석 선점 로직 구현
- Spring의 @Scheduled 를 사용하여 좌석 상태 복원 작업 구현
- shedlock + Redis 를 사용하여 좌석 상태 변경 스케줄링 작업 구현
- 토스페이먼츠 결제 연동 을 사용하여 결제 기능 구현
⚠️ 개발 기록 및 이슈
<aside>
❗
- 티켓 예매 시 동시성 문제를 Redis의 원자연산으로 해결
</aside>
문제 상황
예매 기능 MVP 구현 후 멀티스레드 환경에서 테스트 해보니 동일한 좌석에 대해 다수의 티켓이 생성되는 동시성 문제가 발생했습니다.
당시 로직은 티켓 생성 시 좌석 상태를 조회하고 상태가 AVAILABLE 하다면 티켓을 생성하는 로직이었습니다.