CACHE
아티클 시리즈

Redis 프로젝트 회고

실제 대규모 서비스에 Redis 캐시를 도입하면서 겪은 기술적 문제들과 해결 과정. 분산 캐시 동기화, 동시성 이슈, 대규모 장애 대응까지.

총 12편 2025.08 – 2025.09
총 12편
01
RestTemplate 한글 깨짐과 Custom ObjectMapper 미적용 해결하기

기본 RestTemplate의 ISO-8859-1 인코딩과 커스텀 ObjectMapper 미반영 문제를 직접 Primary Bean으로 등록해 해결한 과정을 기록합니다.

2025.08.27 · 1분 읽기
02
Redis 키 네이밍 파편화 해결기

여기저기서 다른 규칙으로 만들어지던 Redis 키를 단일 진입점으로 강제해 정규화한 과정을 기록합니다.

2025.09.01 · 1분 읽기
03
CompletableFuture 스레드풀 분리로 pool starvation 해결하기

ForkJoinPool.commonPool에 블로킹 I/O를 태워 발생한 스레드풀 고갈 현상을 CPU/IO 실행기 분리로 해결한 과정을 기록합니다.

2025.09.02 · 1분 읽기
04
Redis WarmUp 개선과 TTL 다층화로 초반 응답 지연 줄이기

캐시가 있음에도 초반 요청이 느린 아이러니를 WarmUp 비동기화, optionTTL 세분화, fastExpire 연계로 해결한 과정을 기록합니다.

2025.09.03 · 1분 읽기
05
Redis 캐시 적재 중 NPE와 캐스팅 에러 방어하기

외부 API에서 bnrSeq가 누락되거나 타입이 섞여 들어오는 케이스를 instanceof 타입 가드와 방어 로직으로 안전하게 처리한 과정을 기록합니다.

2025.09.04 · 1분 읽기
06
Lettuce AsyncCommand.complete() 에러 분석과 mget 체인 단순화

RedisFuture를 toCompletableFuture()로 브리지한 mget 비동기 체인에서 간헐적으로 발생한 complete() 예외를 분석하고, 브리지 제거와 명시적 타임아웃 처리로 해결한 과정을 기록합니다.

2025.09.05 · 2분 읽기
07
CompletableFuture에서 객체 참조 공유로 인한 데이터 오염 해결하기

여러 Future에서 같은 객체 인스턴스를 공유하다 발생한 데이터 정합성 문제를 깊은 복사(Deep Copy)로 해결한 과정을 기록합니다.

2025.09.07 · 1분 읽기
08
멀티 인스턴스 환경에서 Caffeine + Redis 캐시 동기화하기 (Pub/Sub)

로컬 Caffeine 캐시와 Redis 캐시를 병합 운영하던 중 발생한 인스턴스 간 캐시 불일치를 Redis Pub/Sub 무효화 이벤트로 해결한 과정을 기록합니다.

2025.09.08 · 1분 읽기
09
개인화 추천 모듈의 Redis 캐시 skip을 AtomicReference로 동적 관리하기

shopCode 기반 정적 properties 관리의 한계를 넘어, moduleCd와 Redis 헬스 응답을 기반으로 캐시 적용 여부를 런타임에 동적으로 판별하도록 개선한 과정을 기록합니다.

2025.09.10 · 1분 읽기
10
Redis 3차 대규모 배포 장애 회고 — 기술·프로세스·조직의 복합 사고

velocity 템플릿 직접 수정과 마케팅 프로모션 실수가 겹쳐 홈메인이 9분간 먹통이 된 배포 사고를 분석하고, 재발 방지 프로세스를 정리합니다.

2025.09.13 · 3분 읽기
11
상품 상세 페이지 캐시 전략 — STEP 기반 DB·캐시 혼합 설계

개인화와 실시간성이 필요한 상품 상세 페이지에 풀 캐싱을 적용할 수 없는 이유를 분석하고, 데이터 성격에 따라 DB와 Redis를 혼합하는 STEP 기반 설계로 해결한 과정을 기록합니다.

2025.09.14 · 2분 읽기
12
Redis 프로젝트 마무리 — 운영에서만 보이는 것들

프로젝트 종료 후 운영팀 배정 이후 겪은 운영 특화 문제들을 정리하고, Redis가 단순 캐시 솔루션이 아닌 서비스 성장의 핵심 인프라임을 깨달은 과정을 기록합니다.

2025.09.24 · 2분 읽기