피드로 돌아가기
올리브영 테크블로그Backend
원문 읽기
올리브영은 왜 선물하기를 개편했을까? Part - 1
올리브영이 선물하기 서비스를 전시 전략과 통합하고 Redis 캐싱 및 커스텀 어노테이션 도입으로 평균 응답 속도 개선
AI 요약
Context
기존 선물하기관은 페이지 렌더링 시 실시간 DB 호출에 크게 의존하면서, 트래픽 증가 시간대에 DB 리소스 부족과 속도 저하 문제가 발생했습니다. 일부 페이지만 Redis 캐시 적용 상태였고, 일 단위 배치 작업으로 상품 가격 및 품절 상태가 실시간 반영되지 않았습니다. 배치 작업 오류 시 자동화된 복구 절차가 없어 수동 재처리로 인한 휴먼 에러 위험이 존재했습니다.
Technical Solution
- DB 리소스 점유 감소: 올리브영 전시 전략과 선물하기를 통합하여 동일한 아키텍처 기반으로 데이터 조회
- Redis 캐싱 범위 확대: 일부 페이지에만 적용되던 Redis 캐시를 대부분의 페이지로 확대 적용
- 커스텀 어노테이션 도입: @GiftCaching과 @GiftCachingKey 어노테이션을 Spring AOP와 Kotlin 리플렉션으로 구현하여 캐싱 설정 일원화
- 공통 캐싱 로직 중앙화: Cache Stampede 방지 로직을 단일 포인트에서 관리하여 개발자가 비즈니스 로직에 집중하도록 개선
- 실시간 데이터 반영: 배치 작업 기반 업데이트에서 전시 전략 통합으로 전환하여 상품 정보 실시간 동기화
Impact
선물하기관의 평균 속도 개선 (구체적 수치는 아티클의 비교 차트 참조)
Key Takeaway
일관된 사용자 경험과 효율적인 자원 관리를 위해서는 별도 운영 중인 기능들을 통합된 전시 전략 기반 아키텍처로 재설계하되, Spring AOP와 리플렉션을 활용한 커스텀 어노테이션으로 반복적인 설정을 제거하고 운영 일관성을 확보할 수 있습니다.
실천 포인트
실시간 DB 호출에 의존하는 검색/조회 기능 서비스에서 Spring AOP 기반 커스텀 어노테이션을 통해 Redis 캐싱을 일원화하면, 캐시 설정의 분산을 제거하고 Cache Stampede 같은 캐시 이슈를 단일 포인트에서 관리하여 개발 오류 확률과 운영 복잡도를 동시에 줄일 수 있습니다.