문제 상황
단일 Redis 인스턴스 사용 시 다음과 같은 문제가 발생할 위험이 있었습니다:
- Redis 장애 시 데이터 유실 위험
- 단일 Redis 인스턴스가 장애를 겪으면 캐시 데이터가 모두 유실될 위험이 있었습니다.
- 조회수나 포인트 랭킹 같은 실시간 데이터가 손실되면, 시스템 신뢰도가 크게 떨어질 가능성이 있었습니다.
- 고가용성 부족
- 단일 Redis는 장애 복구 기능이 없어, 서비스 중단이 발생할 수 있었습니다.
- 실시간 처리가 중요한 우리 프로젝트 특성상, Redis 장애 시에도 서비스가 안정적으로 유지되어야 했습니다.
도입 이유 및 해결 방안
Redis Sentinel은 Redis의 고가용성을 보장하며, 장애 발생 시에도 데이터 유실을 방지하고 서비스의 연속성을 유지할 수 있었습니다.
- 자동 장애 조치
- Redis Sentinel은 장애 발생 시 자동으로 새로운 마스터를 지정하고 복구를 지원했습니다.
- 이를 통해 Redis 인스턴스의 장애가 발생하더라도 서비스가 중단되지 않았습니다.
- 데이터 안정성 보장(유실 방지)
- Sentinel을 통해 Redis 장애 시에도 복구가 가능하여, 게시물 조회수와 포인트 랭킹 같은 데이터의 안정성을 보장했습니다.
- 크지 않은 프로젝트에 적합한 고가용성 솔루션
- 클러스터 방식은 설정과 운영 복잡도가 높아 프로젝트 규모에 비해 부담이 컸습니다.
- Sentinel은 비교적 간단한 설정으로 고가용성을 제공해, 프로젝트의 규모와 요구사항에 적합한 선택이었습니다.
'PORTFOLIO > TECHNICAL DECISION-MAKING' 카테고리의 다른 글
[library - 기술적 의사 결정] 프리 티어 한계를 넘어서: 메모리 부족과의 전쟁 (0) | 2025.01.08 |
---|---|
[ACE Hand Wash - 기술적 의사 결정]코드 정리 대작전: 권한 확인 로직, 어디까지 분리해봤니? (0) | 2025.01.08 |
[CodeChef - 기술적 의사 결정] Redis 도입이 필요한 이유 (0) | 2025.01.06 |
[CodeChef - 기술적 의사 결정] Docker Hub? AWS ECR? (0) | 2025.01.06 |
[CodeChef - 기술적 의사 결정] CI/CD 툴, Jenkins? Github Actions? (0) | 2025.01.06 |