본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

68일차 - 레디스, 쿠버네티스 준비

레디스(Redis)

레디스란? (챗 GPT 답변)

레디스(Redis)는 인메모리 데이터 스토어(in-memory data store)로서 사용되는 오픈 소스 데이터베이스입니다. 영구적인 데이터 저장이 목적인 전통적인 데이터베이스와 달리, 레디스는 메모리에 데이터를 저장하여 빠른 읽기 및 쓰기 성능을 제공합니다.

레디스는 키-값(Key-Value) 구조를 사용하여 데이터를 저장합니다. 각 데이터는 고유한 키와 연결되어 있으며, 이 키를 사용하여 데이터를 조회하거나 업데이트할 수 있습니다. 레디스는 문자열(Strings), 해시(Hashes), 리스트(Lists), 집합(Sets), 정렬된 집합(Sorted Sets) 등 다양한 데이터 유형을 지원합니다. 또한, Pub/Sub(pub/sub) 메시징 시스템을 제공하여 다양한 클라이언트 간의 메시지 전달을 지원합니다.

레디스는 주로 웹 애플리케이션, 게임, 소셜 미디어, 실시간 대시보드 및 분산 시스템 등에서 널리 사용되고 있습니다. 또한, 레디스는 다양한 프로그래밍 언어로 개발된 클라이언트 라이브러리를 제공하므로 다양한 환경에서 쉽게 사용할 수 있습니다.

요약하자면, 레디스는 빠른 성능과 다양한 데이터 유형 지원을 통해 메모리 기반 데이터 스토어로서 다양한 애플리케이션에서 사용되는 강력하고 인기 있는 오픈 소스 데이터베이스입니다.

  

레디스의 장점과 단점 (챗 GPT 답변)

레디스의 장점:

  1. 높은 성능: 레디스는 메모리 기반 데이터 스토어로서 매우 빠른 읽기 및 쓰기 성능을 제공합니다. 디스크 I/O가 필요하지 않으므로 응답 시간이 매우 빠르며, 대량의 요청에도 효율적으로 처리할 수 있습니다.
  2. 간편한 사용: 레디스는 간단한 키-값 구조를 사용하여 데이터를 저장하고 조회할 수 있습니다. 데이터 모델이 단순하며, 다양한 데이터 유형을 지원하여 다양한 용도로 활용할 수 있습니다.
  3. 확장성: 레디스는 클러스터링과 데이터 복제와 같은 기능을 제공하여 확장성을 높일 수 있습니다. 데이터를 여러 노드에 분산하여 처리하므로 대량의 데이터와 요청에도 대응할 수 있습니다.
  4. 다양한 기능 제공: 레디스는 캐싱, 세션 관리, 대기열 처리, Pub/Sub 메시징 시스템 등 다양한 기능을 제공합니다. 이를 활용하여 애플리케이션의 성능과 확장성을 향상시킬 수 있습니다.

레디스의 단점:

  1. 메모리 제약: 레디스는 데이터를 메모리에 저장하기 때문에 메모리 용량에 제약이 있습니다. 대용량 데이터의 경우 메모리 용량을 초과할 수 있으며, 이를 위해 추가적인 하드웨어나 설정이 필요할 수 있습니다.
  2. 영구 저장의 한계: 레디스는 기본적으로 메모리에 데이터를 저장하므로 서버 재시작이나 전원 손실 시 데이터가 손실될 수 있습니다. 데이터의 영구적인 보존이 필요한 경우에는 추가적인 조치가 필요합니다.
  3. 복잡한 쿼리 지원 부족: 레디스는 간단한 키-값 조회를 위한 데이터 저장소로 설계되었기 때문에 복잡한 쿼리나 조인 작업을 지원하는데 제한이 있습니다. 복잡한 데이터 처리 작업을 수행해야 하는 경우에는 다른 데이터베이스 시스템과의 조합이 필요할 수 있습니다.
  4. 데이터 일관성: 레디스는 데이터 일관성을 보장하지 않습니다. 데이터의 복제나 클러스터링을 통해 가용성과 내결함성을 높일 수는 있지만, 데이터의 일관성을 보장하기 위해서는 추가적인 조치가 필요합니다.

  

의존성 추가(build.gradle)

  

// redis 드라이버
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

// 세션을 스프링 내부객체가 아닌 다른 저장소에 저장할 수 있도록 해준다.
implementation 'org.springframework.session:spring-session-core'

// 세션을 redis에 저장
implementation 'org.springframework.session:spring-session-data-redis'

  

운영 환경에서만 레디스 동작시키기(application.yml)

- application-prod.yml에는 exclude 부분을 비워둔다.

  

spring:
  profiles:
    active: dev
  autoconfigure:
    exclude:
      - org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
      - org.springframework.boot.autoconfigure.session.SessionAutoConfiguration
      
    ...

  

Redis Windows 다운로드

https://github.com/microsoftarchive/redis/releases

 

Releases · microsoftarchive/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

github.com


쿠버네티스 사용 준비하기

- NCP에서 서버 3개 생성(k8s-1-001, k8s-1-002, k8s-1-003)

- ACG 설정(3306, 22 포트)

- 포트 포워딩 설정(2229, 2230, 2231)

- k8s-1-001만 공인 IP 받기

- DNSzi에서 'k8s-1.내_도메인' => 공인 IP로 설정

- 터미널에서 서버 3개 접속하여 yum install epel-release -y, yum update -y, yum install vim mlocate -y, updatedb 실행