inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

6-13. Redis 캐싱 시 발생하는 대표 문제 사례와 해결책 3

hot key 문제를 방지하기 위해 적용한 DCL의 재시도 횟수와 랜덤 지터에 대한 질문입니다

해결된 질문

73

도등어

작성한 질문수 9

0

1. 현재 학습 진도

 

2. 어려움을 겪는 부분

 

3. 시도해보신 내용

java spring mysql redis 이력서

답변 2

1

딩코딩코

안녕하세요 도등어님!! 좋은 질문 감사합니다

1~2 분 동안의 작업을 레디스 락을 이용해서 잡고자 하는게 유저들의 공통 데이터인가요? 혹은 특정 유저만의 데이터인가요?

이를 통해 유저들이 과도한 LLM 호출을 줄여주고 싶은게 목적인가요?

혹은 특정 유저의 중복 호출을 막아주기 위함인가요?

 

위의 요구사항에 따라서 구현하는 방식이 갈릴 것 같습니다

만약 전자가 목적이라면 배치를 통해 미리 생성한 값을 노출시키는 구조가 더 낫지 않을까 싶습니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
도등어님께서 레디스를 이용한 캐싱과 DCL(Double-Checked Locking) 적용에 대해 고민하고 계신 것 같습니다. hot key 문제와 관련하여 몇 가지 조언을 드리겠습니다.

  1. 최적의 재시도 간격 설정: 재시도 간격을 랜덤 지터와 함께 설정하여 락 획득을 동시에 시도하는 것을 어느 정도 방지하고 계신 것으로 보입니다. 재시도 간격을 200~300ms로 설정하셨는데, 요청 실패가 빈번하다면 재시도 간격을 늘리거나 시도 횟수를 조절하여 시스템의 부하를 줄이도록 밸런스를 잘 맞춰야 합니다. 이를 위해 사용자 경험(UX)과 시스템 안정성을 고려하여 다른 구성 요소의 퍼포먼스를 모니터링하며 조절할 수 있습니다.

  2. 락 경합 줄이기: 락 경합이 빈번하다면 락을 얻기 위한 경쟁을 줄이기 위해 지역적으로 분산된 캐시나, 캐싱 책략을 변경해 볼 수 있습니다. hot key에 대한 요청 빈도나 패턴을 분석하여 해당 키에 대한 접근을 분산하거나, 임의의 키로 분리해볼 수도 있습니다.

  3. 백오프 전략 사용: 지터 기반의 백오프(backoff) 전략을 적용하여 재시도를 점진적으로 길게 할 수도 있습니다. 예를 들어, 지수적 백오프를 사용하여 재시도 횟수가 늘어날수록 시간을 늘려가는 방식으로 부하를 조절할 수 있습니다.

  4. 서비스 아키텍처 개편: 더 근본적인 해결책을 원하신다면 서비스 아키텍처 측면에서 비동기 처리를 지원하도록 구조를 개편하는 것도 하나의 방법입니다. 예를 들어, 메시지 큐를 사용하여 요구 처리 시간 동안 비동기적으로 작업을 처리하도록 하여 병목을 줄이는 방법도 고려해 볼 수 있습니다.

추가적인 코드나 설정에 대한 피드백을 원하신다면, 깃허브 링크를 통해 동료 개발자들과 더 깊이 있는 논의를 진행하는 것도 좋습니다.

도움이 되셨기를 바랍니다.

Image: GitHub Code Link

Doc Source: Spring Boot Hot Swapping

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

44

2

Build 관련 문제 (테스트 관련 문제)

0

44

2

인덱스 관련 질문 있습니다.

0

75

2

비관적 락 구현 방식 문의 건

0

82

2

외부 api 처리 방안에 대하여 궁금한 점이 있습니다.

0

93

2

네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문

0

88

2

이벤트) 백엔드 기술면접 실전문제집

0

107

2

로컬에서 테스트 한 결과를 이력서에 써도 괜찮을까요?

0

134

2

데드락 발생 시, 외래 키를 제거하는 방법 관련 질문

0

91

2

Redis 캐싱을 도입하는데 db조회와 성능이 차이가 거의 없습니다.

0

115

2

k6 부하테스트 중인데 개선 전 성능이 너무 안나와서 고민

0

142

2

강의와 성능수치 비교

0

105

2

13강 강의 뒷부분의 과제 안내부분은 어디있나요?

0

52

2

이벤트 참가자 수 증가 후, save 메서드 호출 코드 질문

0

66

2

[수업 자료 질문] Cache Aside의 특징 문의

0

89

2

[수업자료 문의] RedisTemplate으로 SETNX 시 리턴값 문의

0

83

2

블로그에 학습 내용 정리 포스트를 올려도괜찮나요?

0

113

2

멀티스레드 상황인데 currentParticipants 가 AtomicInteger가 아닌 이유?

0

91

3

클라우드 환경 배포시 부하 테스트 방식에 대하여

0

153

2

k6 dashboad 안나오는 상

0

119

2

2-4 도커 빌드 에러가 계속 납니다.

0

302

2

AWS EC2에 도커 컨테이너가 동작하지 않을 때 확인 해야하는 것

0

118

2

성능 측정시

0

114

2

API 별 실행 쿼리 모니터링 구현 질문 있습니다.

0

87

2