이중화 환경에서 Redis 구성 시 고려사항 (Managed vs 설치형)
웹 서비스 이중화 환경에서 로그인 세션을 유지하기 위해 Redis 구성을 검토하면서 확인한 내용을 정리합니다.
문제/상황
구성하려는 환경은 다음과 같습니다.
- 웹 서버 이중화 (App 서버 2대)
- Load Balancer를 통한 트래픽 분산
- 로그인 이후 쿠키 기반 세션 유지
- Web / API 서버가 동일 인스턴스에서 동작
이 구조에서 아래와 같은 상황이 발생할 수 있습니다.
사용자 → LB → 서버1 (로그인)
사용자 → LB → 서버2 (API 호출)
즉, 로그인과 이후 요청이 서로 다른 서버에서 처리될 수 있습니다.
초기에는 단일 App 서버에 Redis를 직접 설치해 세션을 저장하는 방안을 고려했지만, 이중화 환경에 적합한지 검토가 필요했습니다.
해결 방법 / 개요
아래 내용을 중심으로 정리합니다.
- Redis 기본 개념
- 이중화 환경에서 Redis 사용 시 주의사항
- 설치형 Redis와 Managed Redis 비교
- 실제 구성 결정 과정
아키텍처 / 흐름
기존 고려 구조
User → LB → App1 / App2 → Redis (단일 서버)
변경 후 구조
User → LB → App1 / App2 → Managed Redis (Cloud DB for Cache)
사전 준비
- 클라우드 Load Balancer + VM 구성
- Redis 세션 저장 용도 이해
- 웹 서비스 이중화 구조
1. Redis 개념 (간략)
Redis는 메모리 기반 Key-Value 저장소로, 빠른 조회 속도가 필요한 데이터 처리에 사용됩니다.
주로 다음 용도로 사용됩니다.
- 로그인 세션 저장
- 캐시 데이터 저장
- 간단한 상태 정보 관리
세션 저장 용도로 사용할 경우 흐름은 아래와 같습니다.
로그인 → 세션 생성 → Redis 저장
요청 → 세션 조회 → 인증 처리
2. 이중화 환경에서 Redis 주의사항
2-1) 왜 공용 Redis가 필요한가
이중화 환경에서는 요청이 항상 같은 서버로 전달되지 않습니다.
로그인 → 서버1
API 요청 → 서버2
서버마다 Redis가 따로 있다면 세션을 공유할 수 없습니다. 따라서 모든 서버가 동일한 Redis를 사용해야 합니다.
2-2) 단일 Redis 서버의 문제점
공용 Redis를 사용하더라도, 단일 서버에 구성할 경우 아래 문제가 생깁니다.
단일 장애 지점 (SPOF)
- Redis 서버 장애 시 전체 로그인 세션 사용 불가
- 모든 API 요청이 인증 실패로 이어짐
운영 중 재시작 영향
- Redis 재시작 시 세션 데이터 유실 가능
- 전체 사용자 로그아웃 발생
구조 불균형
- 웹 서버는 이중화되어 있지만 세션 저장소가 단일 서버라면 이중화 구조가 실질적으로 완전하지 않음
3. 설치형 Redis vs Managed Redis
설치형 Redis
- 서버에 직접 설치
- 초기 구성이 단순
- 장애 대응 및 운영을 직접 수행
Managed Redis (Cloud DB for Cache)
- 클라우드에서 제공하는 Redis 서비스
- 이중화 및 장애 대응 구조 기본 포함
- 운영 부담 감소
비교 정리
| 항목 | 설치형 Redis | Managed Redis |
|---|---|---|
| 세션 공유 | 가능 | 가능 |
| 장애 대응 | 수동 | 자동 |
| 이중화 | 별도 구성 필요 | 기본 제공 |
| 운영 부담 | 높음 | 낮음 |
4. 실제 구성 결정 과정
초기에는 운영 App 서버에 Redis를 직접 설치해 세션 저장소로 사용하는 방안을 검토했습니다.
하지만 아래 이유로 적합하지 않다고 판단했습니다.
- 이중화 환경에서 단일 Redis는 장애 시 전체 서비스에 영향
- 세션은 인증과 직결되므로 안정성이 중요
- DB 등 다른 주요 구성 요소는 이미 Managed 서비스 기반으로 운영 중
결론적으로, 세션 저장소도 동일 기준으로 Managed 서비스를 사용하는 것이 적합하다고 판단했습니다.
변경 적용:
- Redis → Cloud DB for Cache (Managed) 사용
- DB → RDS (Managed) 사용
- 주요 상태 저장소를 Managed 서비스 기반으로 통일
정리
이중화 환경에서 Redis는 단순 캐시가 아니라 로그인 상태를 유지하는 핵심 구성 요소입니다.
아래 기준으로 접근하는 것이 적합합니다.
- 모든 서버가 공통으로 접근 가능한 구조
- 단일 장애 지점 제거
- 운영 중단 없이 유지 가능한 구성
이 조건을 만족하기 위해 설치형보다 Managed 서비스 기반으로 구성하는 방향으로 결정했습니다.