본문 바로가기

패스트캠퍼스/50일의 기적 AI 환급반

패스트캠퍼스 환급챌린지 46일차 : 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4n8ztzq

 

 

안녕하세요 :)

오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판" 챌린지에 도전하는 마흔 여섯번째 날입니다.

 

마흔 다섯번째 날에는 스프링을 사용하여 샤딩 직접 구현에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.

 

 

오늘 학습할 내용의 제목은,

Part 5. 모놀리틱 서비스 분해 > Ch 2. 레디스의 고가용성과 확장성 확보를 위한 클러스터링 >

02. Docker Compose를 사용한 로컬 레디스 클러스터 구성

입니다.

 


📦 Docker Compose를 사용한 로컬 레디스 클러스터 구성

  • 이번 글은 로컬 개발 환경에서 Docker Compose를 활용해 Redis Cluster를 구성하는 과정을 정리한 내용입니다. 실무에 투입하기 전, 클러스터 구조와 동작 방식을 빠르게 실험하고 검증할 수 있는 환경을 만드는 것이 목표입니다.

 

🛠 준비 사항

  • Docker 및 Docker Compose 설치를 미리 완료해두어야 합니다.
  • 로컬 테스트를 위한 포트 여유를 확보해야 합니다.
  • Redis Cluster 동작 방식 기본 이해해야 합니다.

 

🗂 폴더 구조 예시

redis-cluster/
 ├── docker-compose.yml
 ├── redis-node1/
 │   └── redis.conf
 ├── redis-node2/
 │   └── redis.conf
 ├── redis-node3/
 │   └── redis.conf

 

 

⚙️ docker-compose.yml 작성

  • 아래 예시는 3개의 Redis 노드를 구성하는 최소 설정 예시입니다.
version: '3.8'
services:
  redis-node1:
    image: redis:7.2
    container_name: redis-node1
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-node1/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "7001:7001"
      - "17001:17001"

  redis-node2:
    image: redis:7.2
    container_name: redis-node2
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-node2/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "7002:7002"
      - "17002:17002"

  redis-node3:
    image: redis:7.2
    container_name: redis-node3
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-node3/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "7003:7003"
      - "17003:17003"

 

📝 redis.conf 기본 설정

  • 클러스터 모드를 활성화하고, 각 노드별 포트와 동작을 지정합니다.
노드마다 port 값을 다르게 설정하세요.

 

 

🚀 클러스터 생성 명령

  • 모든 컨테이너를 띄운 후, Redis CLI에서 클러스터를 생성합니다.

 

🔍 동작 확인

  • 클러스터 상태 확인: docker exec -it redis-node1 redis-cli -p 7001 cluster info
  • 슬롯 배정 확인: docker exec -it redis-node1 redis-cli -p 7001 cluster slots

 

  • 이번 강의를 통해 느꼈던 것은 로컬 개발 환경에서는 3노드 구성으로 충분하지만, 실무 운영 환경에서는 최소 6노드(마스터 3 + 슬레이브 3) 구성을 권장하는 것이 좋다고 생각하며, 포트 충돌에 주의하고, docker network를 사용해 IP 관리에 신경 써야 합니다.
  • 또한, 데이터 영속성을 위해 appendonly yes 설정과 함께 적절한 RDB 스냅샷 주기를 설정하고, 장애 복구 테스트를 자주 해보면 운영 시 안정성이 크게 향상될 것이라고 생각합니다.