인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

wisehero님의 프로필 이미지

작성한 질문수

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

조회수 설계 & Redis 개발 환경 세팅

레디스와 관련해서 궁금한 점이 있습니다.

해결된 질문

작성

·

110

0

안녕하세요 쿠케님 좋은 강의 감사합니다. 레디스와 관련되어 궁금한 점이 있어 여쭙고자 합니다.

 

  1. 현재 사내에서는 레디스를 사용 중이 아닌데 최근 JWT 기반의 인증 인가를 주니어들끼리 도입해서 이에 따른 토큰 관리 저장소로 레디스 도입을 제안 했는데요. 레디스를 이미 사용하는 환경에서 레디스를 직접 EC2에 설치해서 사용하는지 아니면 엘라스틱 캐시와 같은 클라우드 서비스에서 제공하는 것을 사용하는지 궁금합니다.

  2. 레디스와 관련되어서 몇 가지 기술 토론을 본 적이 있는데 레디스를 굳이 클러스터링 해야하나? 레디스가 단순한 이론서에서 설명하는 것 만큼 레디스 한 대가 금방 뻗을 만큼 취약하지 않다는 입장도 보았는데... 레디스 도입에 따른 클러스터링은 필수적인가요?

답변 2

1

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

wisehero님, 안녕하세요!

 

  1.  

보통 인프라 구축은 직접하는 것보다, 클라우드 서비스를 이용하는게 훨씬 편합니다!

마이너한 기술이 아닌 이상 웬만하면 서비스가 이미 다 제공되고 있어서, 개발자가 직접 세팅하고 운영할 일은 잘 없긴 하네요..!

그래서 강의 소개에서도 인프라 구축은 가정만 하고, 분산 DB 이론 강의에서도 이미 만들어진 클라우드 서비스를 이용하라고 말하기도 합니다!

해당 분야의 전문가들이 잘 구축해둔 것이고, 모니터링 툴도 기본적으로 다 제공해주니깐요.

기술 지원을 받을 수도 있고요.

그런데 사내에서 비용 등의 문제로 인해 그런걸 지원해주지 않고 자체 구축하라고 한다면, 어쩔 수 없이 자체 구축이 필요할 수는 있겠네요.

 

2.

데이터가 많지 않다면, 샤딩을 위해서 반드시 클러스터링을 구성할 필요는 없습니다!

딱히 데이터 분산 필요성이 없으면, 단일 샤드로 구성해도 충분합니다.

그래도 마스터/레플리카 구성은 있는게 좋긴 합니다.

잘 안 뻗는다하지만, 실제로는 별의별 문제로 뻗을 수 있습니다.

소프트웨어적인 결함뿐만 아니라 하드웨어적인 결함일 수도 있고, 네트워크가 끊길 수도 있는거라서요.

fail over는 보장해두면 좋습니다.

다만, 비용을 고려해야 하고 휘발성 캐시 용도로만 사용한다면, 레디스 단일 노드로 충분할 수도 있네요.

 

강의는 대규모 시스템에 대한 내용이기 때문에 운영 편의성이나 데이터 분산 등이 고려되었다고 봐주시면 됩니다.

하지만 실제로는 서비스 규모, 비용, 회사 지원 여부 등에 의해 구성을 달리해야할 수 있기 때문에, 현 상황에 적절한 최적화된 구성을 찾아나가시면 됩니다!

괜히 처음부터 클러스터링, fail over 모두 고려할 필요도 없습니다.

뭐든 현 상황에 문제 없다고 판단되면 어떠한 구성도 괜찮은 것이고, 정답도 없습니다.

 

혹시 더 궁금한 점 있으시면 편히 문의주세요!

0

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

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

레디스(Redis)를 도입하려는 결정은 데이터 관리와 성능 최적화 측면에서 아주 유용한 선택이 될 수 있습니다. 다만, 레디스의 용도와 환경에 따라 다양한 트레이드오프와 고려사항이 존재하기 때문에 정확한 요구사항을 기반으로 한 결정을 하시는 것이 중요합니다.

1. 레디스 설치와 서비스 활용

  • 직접 설치: EC2에 직접 설치하여 사용하는 경우, 초기 비용이 저렴하고, 설정 및 구성이 자유롭다는 이점이 있습니다. 다만, 운영 및 유지보수 측면에서 챌린지가 될 수 있으므로 경험이 중요합니다.
  • 클라우드 서비스 이용: AWS의 ElastiCache와 같은 서비스는 관리형 서비스로, 고가용성과 자동 클러스터 관리, 백업 등의 기능을 제공하여 운영 부담을 줄입니다. 특히 초기 설정이 간편하고, 필요에 따라 성능을 확장하는 데 용이합니다.

2. 레디스 클러스터링 필요성

  • 클러스터링 선택적: 레디스의 클러스터링은 대규모 데이터 처리나 높은 가용성을 요구할 때 사용됩니다. 모든 경우에 클러스터링이 필요한 것은 아니며, 실제 환경에서의 부하와 데이터 저장량을 면밀히 분석한 후 결정하는 것이 좋습니다.
  • 단일 인스턴스의 확장성: 많은 경우 성능 최적화를 통해 단일 인스턴스에서도 충분한 성능을 발휘할 수 있습니다. 하지만 데이터 양이 증가하거나, 요청량이 많이 늘어나는 경우에는 클러스터링을 통해 더욱 안정적으로 대응할 수 있습니다.

레디스 도입과 관련된 보다 자세한 정보와 토론 내용을 원하시면 관련된 Redis 클러스터 구조 및 활용 사례 (게시글 제목)을 참고하실 수 있습니다.

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

wisehero님의 프로필 이미지

작성한 질문수

질문하기