인프런 커뮤니티 질문&답변

목동 개발자님의 프로필 이미지

작성한 질문수

실습으로 배우는 선착순 이벤트 시스템

문제점

쿠폰 카운트를 Redis에 의존하고 있는데요

23.09.03 13:06 작성

·

922

3

만약 Redis에 장애가 발생한다면 2차 장치로 DB Count에 의존할 수 밖에 없는걸까요?

실무에선 어떻게 대응하시는지 궁금합니다!

답변 2

2

최상용님의 프로필 이미지
최상용
지식공유자

2023. 09. 07. 09:08

목동 개발자님 좋은 질문 감사합니다!
실무에서는 첫번째로 레디스가 특정 트래픽을 받았을 때 충분히 운영가능한지 성능테스트를 먼저 진행합니다.
그렇게함으로써 레디스가 트래픽을 견딜 수 있는가 (장애가 발생하지 않는가) 를 실험합니다.

그렇지만 트래픽을 견딜 수 있더라도 다른이유로 Redis 에 장애가 발생할 수 있습니다.
그런 경우를 대비하여 Redis 를 이중화를 하여 master 가 다운되었을 때 replication 을 master 로 승격시켜서 장애시간을 최소화 하도록 합니다.

이것보다 안전하게 하려면 Replication 까지 장애가 일어났을때를 대비하여 mysql 혹은 다른 서버의 redis 와 같은 데이터베이스로 관리를 할 수 있을 듯 합니다.

다만, 대부분의 경우 replication 정도까지 하고, 별도의 데이터베이스로 관리하는 경우는 드문 것 같습니다.
정말 서비스 안전성이 중요하다고 생각되는 경우에는 별도의 데이터베이스까지 사용할 것 같습니다.

좋은 질문 해주셔서 감사합니다 :)

0

인프런 AI 인턴님의 프로필 이미지

2023. 09. 05. 13:11

안녕하세요, 인프런 AI 인턴이에요. 쿠폰 카운트를 Redis에 의존하고 있는 경우, Redis에 장애가 발생했을 때 대응하는 방법은 다양합니다. 실무에서는 일반적으로 다음과 같은 방법으로 대응합니다.

  1. 예외 처리: Redis에 접속할 수 없는 경우에는 예외 처리를 통해 오류를 처리하고, 다른 대체 방법을 사용할 수 있도록 합니다. 예를 들어, Redis에 접속할 수 없는 경우에는 DB Count를 사용하도록 설정할 수 있습니다.

  2. 캐시 유효 시간 설정: Redis에 저장된 쿠폰 카운트를 일정 시간마다 갱신하도록 설정하여, 장애 상황이 발생해도 일정 시간 동안은 캐시된 카운트 값을 사용할 수 있도록 합니다. 이는 Redis의 장애 시간 동안 일시적으로 DB Count를 사용하는 것을 방지할 수 있습니다.

  3. 리더/팔로워 모델 사용: Redis의 리더/팔로워 모델을 사용하면, 리더 Redis에 장애가 발생한 경우 팔로워 Redis로 자동으로 스위칭할 수 있습니다. 이를 통해 Redis 장애 시간을 최소화하고, 대체 Redis로 쿠폰 카운트를 계속해서 이용할 수 있습니다.

위의 방법들은 Redis 장애 시에 대체 방법을 사용하거나, 최소한의 영향을 받도록 대응하는 방법입니다. 하지만 이외에도 실무 환경에 따라서 다양한 대응 방법이 있을 수 있으니, 실제로 사용하는 시스템의 상황에 맞춰 적절한 방법을 선택하셔야 합니다. 추가적으로 Redis와 관련된 문서나 자료를 참고하시면 더 자세한 내용을 알 수 있을 것입니다. 어떤 방식을 선택하든, 장애에 대비하여 대체 방법을 고려하는 것이 중요합니다. 제가 도움이 되었기를 바라며, 더 궁금한 점이 있다면 언제든지 질문해주세요. 좋은 하루 되세요!