Skip to main content

Finders Tech Blog

Latest articles

  1. 비관적 락과 낙관적 락, 그리고 예약 시스템에서의 동시성 문제 해결 전략

    ReservationSlot 단위 비관적 락을 통한 정원 초과 및 중복 생성 방지 1. 예약 시스템에서 실제로 어떤 동시성 문제가 발생했는가? 이 예약 시스템은 다음 조건을 가진다. 같은 사진관 같은 날짜 같은 시간대 에 대해 여러 사용자가 동시에 예약 요청을 보낼 수 있다. 이때 락이 없다면 다음 문제가 발생할 수 있다. 1️⃣ 정원 초과 문제 정원 5명 A 요청: 현재 예약 4명 → OK B 요청: 현재 예약 4명 → OK → ...

    Feb 10, 20263 min read

  2. [Redis] Redis 캐시 방어 로직 추가 및 Upstash 연결하기

    드디어 Redis가 죽으면 어떻게 할지 방어 로직을 추가했다. 1. 조회 캐시 vs 인증/토큰 먼저, Redis가 다운되는 것뿐만 아니라 지연되는 것도 생각해야 된다. 그래서 redis가 다운/지연된다면 DB로 fallback 하는 로직을 추가하게 되었다. 하지만 지금 redis를 사용하는 부분은 인기글 조회, 인기 현상소 조회와 인증/토큰 부분이었다. Redis -> 실패/타임아웃 -> DB 조회 조회 캐시는 이런 흐름으로 방어 로직을 넣...

    Feb 9, 20262 min read

  3. [Redis] Redis 캐시 설정 수정 - DefaultTyping.EVERYTHING 삭제

    지난번에 설정한 DefaultTyping.EVERYTHING에서 보안 문제가 생길 수 있다는 이슈를 들었다. 그래서 이번엔 그 부분을 제거하는 방향으로 수정하게 되었다. 1. DefaultTyping.EVERYTHING의 문제점 처음 설계는 Redis용 ObjectMapper에 DefaultTyping.EVERYTHING를 써서 모든 캐시 데이터에 강제로 자바 클래스 정보(@class)를 다 넣는 구조였다. 하지만 이러면 몇 가지 문제가 생기...

    Feb 9, 20262 min read

  4. [Redis] Redis 캐시 적용하기 - 인기글 조회 적용

    지난번 진행했던 Redis 초기 세팅을 바탕으로 오늘은 홈페이지의 인기 게시물 조회 API에 캐시를 적용했다. 인기 게시물은 좋아요 수 기준으로 상위 10개를 불러온다. 실시간으로 데이터가 급격히 변하지 않지만 메인 페이지의 특성상 호출 빈도가 매우 높다. 매번 DB를 조회하는 대신 Redis 캐시를 사용해 성능을 개선했다. 1. RedisConfig 설정 @Configuration @EnableCaching public class Redis...

    Feb 9, 20263 min read