이중화 환경에서 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 서비스 기반으로 구성하는 방향으로 결정했습니다.


This site uses Just the Docs, a documentation theme for Jekyll.