You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
예약·목록 조회·조회수·요청 제한에서 실제로 데이터가 틀어지거나 성능이 무너지는 지점들을 고칩니다.
예약 중복 검증이 사실상 무효 — validateBookingTime 이 시작 시각 ±1시간만 비교합니다. 기존 예약의 endTime 을 보지 않아 09:00~18:00 종일 예약이 있어도 11:00 예약이 통과하고, 취소(CANCELLED) 예약도 충돌로 계산해 해당 시간대가 영구히 막힙니다. 시설 정원도 고려하지 않고, 검사-저장 사이 경쟁 조건에 DB 유니크 제약도 없습니다.
페이징 부재 — 컨트롤러 21개 중 Pageable 을 받는 곳이 0개입니다. CareFacilityApiController 는 전체를 조회한 뒤 메모리에서 subList 라 범위를 넘기면 IndexOutOfBoundsException 이 납니다.
조회수 lost update — 정책·시설·게시글 3곳이 read-modify-write 라 동시 요청 시 증가분이 유실됩니다.
Rate limiting 우회 및 메모리 릭 — X-Forwarded-For 를 무조건 신뢰해 헤더만 바꾸면 우회됩니다. 인메모리 맵은 eviction 이 없고 다중 인스턴스에서 무의미하며, 초과 시 400 을 반환합니다. 게다가 RateLimitInterceptor 는 등록조차 되지 않은 죽은 코드였습니다.
✅ To Dos
실제 구간 겹침 판정 + 취소 예약 제외 + 정원 비교 + PESSIMISTIC_WRITE 락
PageRequestUtil 로 상한 적용(기본 100, 최대 200), 어드민에도 Pageable 도입
조회수를 원자적 UPDATE 쿼리로 전환
ClientIpResolver 신설 — XFF 신뢰 여부를 설정으로
Redis INCR 기반 rate limit 으로 교체, 429 반환, WebMvcConfig 에 인터셉터 등록
Activity
FIX : 예약 겹침 판정·취소 필터·정원 검증 정상화 (#56)
FIX : Rate limiting Redis 전환 및 XFF 신뢰 정책 도입 (#56)
PERF : 목록 API 페이징 도입으로 전체 조회 제거 (#56)
FIX : 조회수 증가를 원자적 UPDATE로 전환 (#56)
[-]PERF : 예약 겹침 판정·페이징·조회수 동시성 개선[/-][+][ Booking ] 예약 겹침 판정·페이징·조회수 동시성 개선[/+]FIX : 예약 겹침 판정·취소 필터·정원 검증 정상화 (#56)
FIX : Rate limiting Redis 전환 및 XFF 신뢰 정책 도입 (#56)
PERF : 목록 API 페이징 도입으로 전체 조회 제거 (#56)
FIX : 조회수 증가를 원자적 UPDATE로 전환 (#56)