본문으로 건너뛰기
피드

ForgeKV — Rust로 만든 멀티코어 Redis 대체제

backend 약 4분

Rust로 만든 Redis 드롭인 대체제. 64-샤드 잠금 아키텍처로 멀티코어 스케일링 지원. 2코어 환경에서 Redis 7 대비 41% 빠른 SET 처리량(158K ops/s). 고동시성에서는 약점 있음. Source-available 라이선스.

  • 1

    64-샤드 잠금 아키텍처(각 샤드별 WAL, memtable, RwLock)

  • 2

    t=2 c=20 기준 158K SET/s — Redis 7 대비 41% 빠름, Dragonfly 대비 3.5배

  • 3

    고동시성(200 연결)에서는 Redis에 역전당하는 약점

  • 4

    RESP2 완전 지원, source-available 라이선스(상업용은 별도 라이선스 필요)

Redis의 고질적 한계인 싱글스레드 구조를 Rust로 해결하겠다는 프로젝트임. Redis 프로토콜(RESP2)을 완전히 지원해서 기존 Redis 클라이언트를 그대로 쓸 수 있는 드롭인 대체제를 표방함.

아키텍처: 64-샤드 잠금 구조

  • 핵심 설계는 64개 샤드 잠금 아키텍처임. 각 샤드가 자체 WAL(Write-Ahead Log), memtable, RwLock을 가짐
  • 동시 쓰기가 같은 샤드에 해시되지 않는 한 서로 블로킹하지 않음 → 코어 수에 비례해서 처리량이 올라감
  • Redis 키를 인식해서 샤딩하기 때문에, 같은 Redis 키의 메타데이터와 실제 데이터가 항상 같은 샤드에 들어감
  • put2 명령으로 SET 시 메타+데이터를 한 번의 WAL 잠금으로 처리해서 라운드트립을 줄임

벤치마크 결과

memtier_benchmark 기준, pipeline=16, 64바이트 값 기준 SET 처리량:

  • 스위트 스팟 (t=2, c=20, 40개 연결): ForgeKV 158K ops/s vs Redis 7 112K vs Dragonfly 45K
    • Redis 7 대비 41% 빠름, Dragonfly 대비 3.5배
  • 레이턴시도 우수: 같은 조건에서 ForgeKV 0.367ms vs Redis 0.546ms vs Dragonfly 1.273ms
  • 싱글스레드(t=1)에선 Redis가 약간 앞서는데, 코어를 추가하면 ForgeKV가 올라가고 Redis는 정체되는 패턴

약점도 명확함:

  • 고동시성 환경 (t=4, c=50, 200개 연결)에서는 ForgeKV가 59K로 떨어지고 Redis가 82K, Dragonfly가 95K로 역전됨
  • 이건 WAL 그룹 커밋 최적화로 개선 예정이라고 함

Redis 호환성

지원하는 명령어 범위가 상당히 넓음:

  • Strings, Keys, Hashes, Lists, Sets, Sorted Sets 등 기본 자료구조 전부
  • HyperLogLog, Geo, Bitmaps, Pub/Sub, Streams까지 지원
  • 트랜잭션(MULTI/EXEC), 스크립팅(EVAL/EVALSHA)도 됨
  • JSON, Bloom Filter 모듈과 RedisSearch 스텁까지 포함

블로킹 커맨드(BLPOP, BRPOP 등)는 Tokio broadcast 채널로 구현함.

라이선스 주의

  • Source-available 라이선스임. 완전한 오픈소스가 아님
  • 평가 및 비상업적 사용은 무료, 상업적 사용이나 SaaS 형태 재배포는 별도 상업 라이선스 필요
  • forgekv.com에서 라이선스 문의 가능

정리

2코어 정도의 환경에서 Redis를 대체할 만한 성능을 보여주고, 호환성도 꽤 탄탄함. 다만 고동시성 환경의 성능 하락과 source-available 라이선스는 도입 전에 반드시 따져봐야 할 부분임. "Redis가 싱글스레드라서 답답했던" 유스케이스가 있다면 한번 테스트해볼 만함.

Redis의 싱글스레드 한계를 정면으로 공략하는 접근. 2-4코어 환경의 성능은 인상적이나, 고동시성 약점과 비오픈소스 라이선스가 프로덕션 도입 시 주요 검토 포인트.

댓글

댓글

댓글을 불러오는 중...

backend

Cloudflare가 잡아낸 QUIC CUBIC 버그, ‘idle’ 한 줄 오판이 다운로드를 죽였다

Cloudflare의 QUIC 구현체 quiche에서 CUBIC 혼잡 제어가 최소 윈도우에 갇혀 회복하지 못하는 버그가 발견됐다. Linux 커널의 idle 최적화를 QUIC에 옮기는 과정에서 TCP와 QUIC의 이벤트 타이밍 차이를 놓쳤고, 결국 ACK 시점을 기준으로 idle 시간을 재도록 고쳐 100% 테스트 통과를 회복했다.

backend

삼성전자가 반도체 개발 조직에 오라클 자바를 공식 채택한 이유

삼성전자 DS 부문이 글로벌 반도체 개발 환경에 오라클 자바 SE 유니버설 서브스크립션을 공식 채택했다. 서로 다른 자바 배포판과 버전이 섞이면서 생길 수 있는 보안, 컴플라이언스, 라이선스 리스크를 줄이고 개발 환경을 표준화하려는 결정이다.

backend

네이버클라우드, 트래픽 따라 알아서 줄고 느는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 CPU, 메모리, 스토리지를 자동 조절하는 완전관리형 서버리스 데이터베이스 서비스를 내놨다. 기존 가상머신 기반 관리형 데이터베이스처럼 피크 트래픽에 맞춰 서버를 과하게 잡아두는 방식에서 벗어나, 사용량 기반 과금과 오토스케일링으로 비용 낭비를 줄이겠다는 방향이다.

backend

네이버클라우드, 사용량 따라 늘고 줄어드는 서버리스 데이터베이스 출시

네이버클라우드가 완전관리형 서버리스 데이터베이스 서비스인 Cloud DB Serverless를 출시했다. VM 기반 관리형 데이터베이스의 고정 비용과 과잉 프로비저닝 문제를 줄이고, 트래픽에 따라 CPU·메모리·스토리지를 자동 조절하는 구조를 내세운다.

backend

네이버클라우드, 사용량 따라 자동 확장되는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 컴퓨팅 자원을 자동 조절하는 서버리스 기반 클라우드 데이터베이스를 출시했음. 기존 가상머신 기반 관리형 데이터베이스의 고정 비용과 운영 부담을 줄이고, 국내 데이터 규제 요구까지 맞추겠다는 전략임.