[Redis] 분산 락을 이용한 동시성 처리
·
Back-End/Redis
들어가며 팝업 스토어 정보 조회 및 예약하는 서비스인 Poppy! 프로젝트를 진행하면서, 예약 처리에 대한 고민이 생겼다. 분산 서버를 통해 예약을 구성하기 때문에 DB나 Redis를 이용해서 Lock을 걸어야 하는 상황이었다. 동시성 처리를 위해 Redis를 사용하게 되었는데, 이 과정을 포스트로 작성하려고 한다. 데이터베이스의 Lock 종류우선 데이터베이스의 Lock 종류를 알아보자. DB Lock에는 비관적 락과 낙관적 락이 있다. Pessimistic Lock (비관적 락) 비관적 락은 트랜잭션이 시작될 때 다른 트랜잭션이 해당 데이터를 읽거나 수정하지 못하도록 미리 Lock하는 방식으로, 해당 Lock의 과정은 다음과 같다.예약을 시도할 때, 해당 시간대 데이터를 조회하면서 동시에 Lock다른 ..
[Spring Boot] 인기 공연 순위 알고리즘 구현
·
Back-End/Spring Boot
들어가며 2024년 7월 말부터 10월 초까지 약 3개월 간 진행했던 프로젝트에 대해 정리할 만한 내용을 블로그에 기재하기로 했다. 프로젝트명은 InConcert로, 공연 소식을 확인하고 동행을 구하는 서비스이다. 크게 정리할 내용은 다음과 같다.쿼리 최적화공연 정보 스크래핑 (비동기 처리)인기 공연 순위 알고리즘 ➡️ 이번 게시글 주제!이 글에서는 인기 공연 순위 알고리즘에 대해 설명하려고 한다.  배경이전 글인 스크래핑 처리 과정을 보면 메인 페이지의 인기 공연을 Play DB에서 얻어온다는 것을 확인할 수 있다. 프로젝트를 진행하면서 공연의 순위를 판단하는 것이 Play DB에 100% 의존하고 있다고 생각했고, 우리 애플리케이션인 InConert만의 순위를 매겨보자고 생각하게 됐다.  순위 알고..