Database

Valkey - Redis의 오픈소스 대안, Kubernetes Helm Chart로 설치하기

Somaz 2026. 2. 25. 00:00
728x90
반응형

Overview

Redis는 오랫동안 인메모리 데이터 스토어의 대명사였다. 캐싱, 세션 관리, 메시지 큐 등 다양한 워크로드에서 독보적인 성능을 보여주며 사실상 업계 표준으로 자리잡았다.

 

그러나 2024년 3월, Redis Inc.가 기존의 BSD 3-Clause 라이선스를 버리고 소스 어베일러블(Source-Available) 라이선스로 전환하면서 상황이 크게 달라졌다

.

이에 대한 응답으로 Linux Foundation의 주도 하에 AWS, Google Cloud, Oracle 등 주요 클라우드 벤더들의 지원을 받아 Valkey 프로젝트가 탄생했다. Valkey는 Redis 7.2.4(마지막 오픈소스 버전)를 포크하여 시작된 프로젝트로, BSD 3-Clause 라이선스를 유지하며 진정한 오픈소스 인메모리 데이터 스토어를 지향한다.

 

이번 글에서는 Valkey의 개념, Redis와의 차이점, 라이선스 비교를 살펴보고, 공식 Helm Chart를 사용하여 Kubernetes 클러스터에 Valkey를 배포하는 방법을 정리한다.

 

 

 

 

 

 


 

 

1. Valkey란?

Valkey는 고성능 오픈소스 인메모리 Key-Value 데이터 스토어이다. Redis 7.2.4를 기반으로 포크되었으며, Linux Foundation이 관리하는 커뮤니티 주도 프로젝트이다. 캐싱, 메시지 큐, 세션 스토어 등 Redis가 담당하던 대부분의 워크로드를 그대로 수행할 수 있으며, Redis 7.2와 높은 호환성을 유지하고 있어 기존 Redis 클라이언트를 그대로 사용할 수 있다.

 

 

Valkey 8.0 이후부터는 독자적인 기술 방향을 본격적으로 추진하고 있다. Kyle Davis(Valkey 메인테이너)는 다음과 같이 말했다.

"From this point forward, Redis and Valkey are two different pieces of software."

 

 

주요 지원 기업으로는 AWS, Google Cloud, Oracle, Ericsson, Snap Inc.(Snapchat 모회사) 등이 있으며, AWS ElastiCache와 MemoryDB에서도 Valkey를 공식 지원하고 있다.

 

 

 

2. Redis vs Valkey 비교

 

 

2.1 라이선스 차이

 

라이선스 변경은 Valkey가 탄생하게 된 가장 핵심적인 이유이다.

항목 Redis Valkey
라이선스 RSALv2 / SSPLv1 / AGPLv3 (트리플 라이선스) BSD 3-Clause
오픈소스 여부 AGPLv3는 OSI 승인이지만 제약이 큼 완전한 오픈소스
상업적 사용 클라우드 서비스 제공 시 제한 있음 제한 없음
거버넌스 Redis Inc. 주도 Linux Foundation 주도
코드 수정/재배포 라이선스에 따라 제약 자유

 

 

Redis의 라이선스 변천사

  • ~2024년 2월: BSD 3-Clause (완전 오픈소스)
  • 2024년 3월: RSALv2 / SSPLv1 (소스 어베일러블, 오픈소스 아님)
  • 2025년 5월 (Redis 8.0): AGPLv3 추가 (트리플 라이선스)

 

Redis가 AGPLv3를 추가하면서 다시 오픈소스 분류에 포함되었지만, AGPLv3의 카피레프트 조항(수정된 코드를 반드시 공개해야 함) 때문에 많은 기업에서 채택을 꺼리는 상황이다.

 

반면 Valkey의 BSD 3-Clause 라이선스는 상업적 사용, 수정, 재배포에 거의 제한이 없어 기업 환경에서 훨씬 유연하게 사용할 수 있다.

 

 

2.2 기술적 차이

항목 Redis Valkey
스레딩 모델 단일 스레드 커맨드 실행 (I/O 멀티스레딩 일부 지원) 향상된 I/O 멀티스레딩 (멀티코어 활용)
메모리 효율성 기존 해시테이블 구조 재설계된 해시테이블로 메모리 오버헤드 감소
RDMA 지원 미지원 실험적 지원 (Valkey 8.0+)
벡터 검색 Redis Query Engine 내장 미지원
JSON 지원 네이티브 지원 미지원
TimeSeries 내장 지원 미지원
호환성 - Redis 7.2와 높은 호환성

 

Valkey는 캐싱, 메시지 큐, 세션 스토어 등 전통적인 인메모리 데이터 스토어 워크로드에서 강점을 보인다. 특히 멀티스레딩 개선으로 높은 처리량(throughput)과 낮은 레이턴시를 달성하며, 메모리 효율성도 개선되었다.

 

반면 Redis는 벡터 검색, JSON, TimeSeries 등 고급 기능이 내장되어 있어 AI/ML 워크로드나 복합적인 데이터베이스 용도로는 Redis가 더 적합할 수 있다.

 

 

 

2.3 커뮤니티와 지원

항목 Redis Valkey
커뮤니티 Redis Inc. 중심 Linux Foundation, AWS, Google Cloud 등
엔터프라이즈 지원 Redis Enterprise (상용) 커뮤니티 기반 (CSP에서 관리형 서비스 제공)
관리형 서비스 Redis Cloud AWS ElastiCache, Google Memorystore 등
원 개발자 antirez 복귀 (2024, 에반젤리스트) Redis 핵심 커미터 다수 참여

 

 

 

 


 

 

 

3. Valkey Helm Chart로 Kubernetes에 설치하기

 

Valkey 공식 Helm Chart(valkey-io/valkey-helm)를 사용하여 Kubernetes에 Standalone 모드로 배포하는 방법을 정리한다. Helmfile을 활용한 선언적 배포 방식을 사용한다.

 

 

3.1 사전 요구사항

  • Kubernetes 클러스터가 구성되어 있어야 한다.
  • kubectl과 helm이 설치 및 설정되어 있어야 한다.
  • helmfile이 설치되어 있어야 한다. (선택)
  • PersistentVolume을 프로비저닝할 StorageClass가 필요하다. (예: local-path)

 

 

3.2 Helm Repository 추가

helm repo add valkey https://valkey.io/valkey-helm/
helm repo update

 

 

3.3 Values 파일 작성

`values/valkey.values.yaml` 파일을 아래와 같이 작성한다.

global:
  imageRegistry: ""
  imagePullSecrets: []

image:
  registry: "docker.io"
  repository: valkey/valkey
  pullPolicy: IfNotPresent
  tag: ""

# 리소스 이름 오버라이드
nameOverride: "valkey-redis"
fullnameOverride: "valkey-redis"

# 클러스터 도메인 (환경에 맞게 수정)
clusterDomain: my-cluster.local

service:
  # NodePort로 외부 접근 허용
  type: NodePort
  port: 6379
  annotations: {}
  # NodePort 포트 번호 (30000-32767 범위)
  nodePort: 30500
  clusterIP: ""
  loadBalancerClass: ""
  appProtocol: ""

networkPolicy: {}

# 리소스 제한 설정
resources:
  limits:
    cpu: 500m
    memory: 1024Mi
  requests:
    cpu: 100m
    memory: 256Mi

# 영구 스토리지 설정 (Standalone 모드)
dataStorage:
  enabled: true
  persistentVolumeClaimName: ""
  subPath: ""
  volumeName: "valkey-data"
  requestedSize: "5Gi"
  # 환경에 맞는 StorageClass 지정
  className: "local-path"
  accessModes:
    - ReadWriteOnce
  keepPvc: false
  annotations: {}
  labels: {}
  hostPath: ""

# 인증 설정 (필요 시 enabled: true로 변경)
auth:
  enabled: false

# 레플리카 설정 (Standalone이므로 비활성화)
replica:
  enabled: false

# TLS 설정
tls:
  enabled: false

# Pod가 배치될 노드 선택
nodeSelector:
  local-path: enabled

# 로그 레벨 설정
valkeyLogLevel: "notice"

env: {}

# Prometheus 메트릭 수집 (필요 시 활성화)
metrics:
  enabled: false

 

 

주요 설정 설명

  • service.type: NodePort — 클러스터 외부에서 NodePort(30500)를 통해 접근할 수 있도록 설정
  • dataStorage.enabled: true — PVC를 생성하여 데이터를 영구적으로 저장
  • dataStorage.className: "local-path" — 환경에 맞는 StorageClass를 지정 (Rancher Local Path Provisioner 등)
  • replica.enabled: false — Standalone 모드로 단일 인스턴스 배포
  • auth.enabled: false — 인증 비활성화 (프로덕션에서는 활성화 권장)

 

 

3.4 Helmfile 작성

`helmfile.yaml` 파일을 작성한다.

repositories:
  - name: valkey
    url: https://valkey.io/valkey-helm/

releases:
  - name: valkey-redis
    chart: valkey/valkey
    namespace: my-db-redis
    version: 0.9.3
    values:
      - values/valkey.values.yaml

 

 

3.5 배포

# Helmfile을 사용한 배포
helmfile sync

# 또는 Helm 직접 사용
helm install valkey-redis valkey/valkey \
  --namespace my-db-redis \
  --create-namespace \
  --version 0.9.3 \
  -f values/valkey.values.yaml

 

 

3.6 배포 확인

# Pod 상태 확인
kubectl get pods -n my-db-redis

# 출력 예시
# NAME                            READY   STATUS    RESTARTS   AGE
# valkey-redis-0                  1/1     Running   0          2m

# Service 확인
kubectl get svc -n my-db-redis

# 출력 예시
# NAME           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
# valkey-redis   NodePort   10.96.xxx.xxx   <none>        6379:30500/TCP   2m

 

 

3.7 접속 테스트

redis-cli를 사용하여 Valkey에 접속할 수 있다. Valkey는 Redis 프로토콜과 호환되므로 기존 Redis 클라이언트를 그대로 사용하면 된다.

# NodePort를 통한 접속 (노드 IP와 NodePort 사용)
redis-cli -h <NODE_IP> -p 30500
 
 
 
# PING 테스트
<NODE_IP>:30500> PING
PONG

# 서버 정보 확인
<NODE_IP>:30500> INFO server
# Server
redis_version:7.2.4
server_name:valkey
valkey_version:9.0.1
...
server_mode:standalone
...
tcp_port:6379
  • `INFO server` 출력에서 `server_name:valkey` 와 `valkey_version:9.0.1` 을 통해 Valkey가 정상적으로 동작하고 있음을 확인할 수 있다.
  • `redis_version:7.2.4` 는 Redis 프로토콜 호환성을 위해 표시되는 값이다.

 

 

 

4. 디렉토리 구조

최종적인 프로젝트 디렉토리 구조는 다음과 같다.

valkey/
├── helmfile.yaml
└── values/
    └── valkey.values.yaml

 

 

 

 


 

 

 

마무리

Redis의 라이선스 변경은 오픈소스 생태계에 큰 파장을 일으켰고, 그 결과 Valkey라는 강력한 대안이 등장했다. Valkey는 단순히 Redis의 포크를 넘어서 멀티스레딩 최적화, 메모리 효율성 개선, RDMA 지원 등 독자적인 기술 혁신을 추진하고 있다.

 

특히 BSD 3-Clause 라이선스를 유지하면서 Linux Foundation의 거버넌스 아래 운영되기 때문에, 라이선스 변경에 대한 불확실성 없이 안심하고 사용할 수 있다는 것이 가장 큰 장점이다. AWS ElastiCache, Google Memorystore 등 주요 클라우드 서비스에서도 Valkey를 공식 지원하고 있어, 클라우드 환경에서의 생태계도 빠르게 확장되고 있다.

 

캐싱, 세션 관리, 메시지 큐 등 전통적인 인메모리 데이터 스토어 워크로드라면 Valkey는 Redis를 대체할 수 있는 충분한 역량을 갖추고 있다. 다만 벡터 검색, JSON, TimeSeries 등 Redis의 고급 모듈이 필요한 경우에는 Redis를 선택하는 것이 더 적합할 수 있다.

 

새로운 프로젝트를 시작하거나, Redis 라이선스 문제로 대안을 찾고 있다면 Valkey를 적극 검토해볼 것을 권장한다.

 

 

 

 

 

 

 

 

 

 


Reference

 

 

 

 

 

Somaz | DevOps Engineer | Kubernetes & Cloud Infrastructure Specialist

728x90
반응형