강의

멘토링

로드맵

Inflearn brand logo image

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

김진현님의 프로필 이미지
김진현

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

redis 종료시 캐싱 처리

해결된 질문

작성

·

13

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요!

article-read service에서 ArticleIdListRepository는 createdEvent를 받았을 때만 추가되는데

만약 redis가 종료돼 데이터가 유실된다면 createdEvent로만 추가되기 때문에 당장 캐시 db로서 역할을 못 할 것 같습니다

이 부분은 redis에 데이터가 유실되지 않는다고 가정하신 뒤 코드를 작성한 것이 맞을까요??

답변 2

1

쿠케님의 프로필 이미지
쿠케
지식공유자

진현님, 안녕하세요!

 

말씀하신대로 레디스에 데이터가 없으면, 레디스에서 데이터를 못 가져오는게 맞습니다.

하지만 레디스도 가용성을 뒷받침하도록 운영할 수 있고(센티널 또는 클러스터), RDB, AOF 등의 백업 전략도 가지고 있습니다.

또, 강의에서는 레디스에 데이터가 없더라도, 원본 데이터 서버에서 fetch 해온 뒤 다시 레디스에 갱신하는 전략을 취하고 있습니다.

목록 데이터는 원본 데이터 서버에서 그대로 조회해오고 있지만, 신규 데이터가 생성되면서 점진적으로 레디스에 데이터가 다시 채워지게 됩니다. (이것도 필요하다면, 조회 후 갱신하는 전략 또는 미리 캐시에 데이터를 채워두는 전략을 취할 수 있습니다.)

 

이 부분은 redis에 데이터가 유실되지 않는다고 가정하신 뒤 코드를 작성한 것이 맞을까요??

위와 같은 이유로, 레디스에 데이터가 유실되더라도 가용성을 유지할 수 있는 전략으로 코드가 작성된 것입니다.

레디스 클러스터나 백업 전략은 이론만 설명하고 넘어간 부분이지만 가용성이 보장된 운영 방식을 가정한 것이고(인프라 구성에 대한 가정은 강의 소개에서 언급됨),

레디스가 죽거나 데이터 유실되더라도 원본 데이터 서버에서 데이터를 조회 및 재갱신을 할 수 있기 때문입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김진현님.

질문 주신 Redis 캐싱 처리 및 데이터 유실에 대한 우려에 대해 설명드리겠습니다. Redis는 메모리 기반의 데이터 저장소로서 빠른 속도를 제공하지만, 서버가 종료되거나 문제가 발생하면 데이터 유실의 가능성이 있습니다. 이러한 특성 때문에, Redis의 데이터 영속성(Persistence)을 어떻게 설정하는지가 중요합니다.

Redis 데이터 영속성 설정

  1. RDB 스냅샷: Redis는 메모리 데이터를 주기적으로 디스크에 덤프하여 저장하는 방법을 지원합니다. Redis 서버 설정을 통해 특정 시간이 경과하거나 특정 조건이 충족될 때 스냅샷을 작성하도록 설정할 수 있습니다.

  2. AOF(Append-Only File) 옵션: 이 옵션은 모든 쓰기 작업을 파일에 연속적으로 기록하여 데이터를 영속화하는 방법입니다. Redis 서버가 재시작될 때, 이 파일을 읽어와 데이터 복구에 사용됩니다.

  3. 유실에 대비한 데이터 복구 전략: Redis 종료 또는 장애가 발생했을 때 데이터 유실을 완화하기 위해 백엔드 데이터베이스(RDBMS)와의 동기화 및 재생성 전략이 필요합니다. Redis가 재시작된 후, RDBMS에서 데이터를 다시 캐시에 적재하는 방식으로 설계할 수 있습니다.

결론

  • Redis 데이터가 유실된 상황을 가정하지 않고 코드가 작성되었더라도, 실 운영 환경에서는 이러한 리스크를 대비한 데이터 영속성 설정 및 복구 전략을 마련하는 것이 중요합니다.

  • Course에서 설명된 내용이 이러한 세부 사항을 다루지 않았을 수 있지만, 안정적인 서비스 운영을 위해서는 Redis의 데이터 영속성과 유연한 복구 시스템을 고려해야 합니다.

유사한 상황에 관련된 Redis 캐싱 데이터 유실 복구 전략 등 기존의 질문 및 답변을 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김진현님의 프로필 이미지
김진현

작성한 질문수

질문하기