Scylladb로 외부 캐쉬 대체 조사

ScyllaDB로 외부 캐쉬 대체 할 수 있다는 주장의 글을 읽고 Comet으로 조사한 내용.

ScyllaDB의 메모리 캐시 대체 주장: 벤치마크와 실사용 분석

ScyllaDB는 Redis, Memcached 같은 외부 메모리 캐시 시스템을 대체할 수 있다고 주장하고 있습니다. 이는 단순한 마케팅이 아니라 실제 벤치마크와 프로덕션 환경에서의 검증된 사례들로 뒷받침되고 있습니다.

ScyllaDB vs Memcached 공식 벤치마크

2024년 ScyllaDB는 Memcached 메인테이너 dormando와 협력하여 중립적인 비교 벤치마크를 수행했습니다. 이 벤치마크는 양측이 함께 설계하고 검증한 매우 신뢰할 수 있는 결과입니다.[1][2]

메모리 효율성

Memcached는 114GB 메모리에 약 1억 100만 개의 아이템을 저장할 수 있었던 반면, ScyllaDB는 6천만~6천 100만 개의 아이템을 저장했습니다. Memcached가 약 65% 더 많은 메모리 내 아이템을 저장할 수 있었습니다. 이는 ScyllaDB가 wide-column 지향 구조를 지원하기 위해 추가 메타데이터(타임스탬프, row liveness 등)와 Bloom Filter, Index를 메모리에 유지해야 하기 때문입니다.[1]

순수 메모리 읽기 성능

  • Memcached: 초당 300만 GET 요청, 25Gbps NIC 대역폭 완전 포화, P99.999 레이턴시 1ms 미만[1]
  • ScyllaDB: 데이터 모델 조정 후(16개 clustering key 사용) 초당 약 300만 row 처리(187K 읽기 작업 × 16 rows), 동일하게 네트워크 대역폭 완전 포화, 서버측 P99 레이턴시 1ms 이내, 클라이언트측 P99 0.9ms[1]

두 시스템 모두 네트워크 대역폭을 완전히 포화시키며 유사한 성능을 달성했습니다.[1]

디스크 기반 워크로드

Memcached Extstore로 1KB 아이템 테스트:

  • 64 IO 쓰레드: 256K GET/초, P99 레이턴시 1-2ms[1]
  • 32 IO 쓰레드: 182K GET/초, P99 레이턴시 1ms 미만[1]

ScyllaDB 동일 조건:

  • 1KB: 268.8K GET/초, 서버측 P99 2ms, 클라이언트측 P99 2.4ms[1]
  • 8KB: 156.8K GET/초, 서버측 P99 1.54ms, 클라이언트측 P99 1.9ms[1]

ScyllaDB는 디스크 기반 워크로드에서 더 높은 처리량을 보였지만, 단일 요청에 대해서는 Memcached의 레이턴시가 약간 더 낮았습니다.[2][1]

종합 평가

벤치마크 결론에 따르면, "올바르게 구성하면 두 시스템 모두 우수한 비용 절감 효과를 제공할 수 있다"며 단순 승패가 아닌 용도에 따른 선택의 문제라고 설명합니다. 단순 key-value 모델과 파이프라이닝이 가능한 워크로드라면 Memcached가 적합하지만, 복잡한 데이터 모델이 필요하다면 ScyllaDB가 더 적합합니다.[1]

실제 프로덕션 사례

Comcast: 가장 인상적인 사례

전환 규모

  • Cassandra 962 노드 + Redis 캐시 서버 60대 → ScyllaDB 78 노드[3][4]
  • 연간 250만 달러 인프라 비용 절감 (60% 절감)[3]
  • P99, P999, P9999 레이턴시 95% 감소[3]

Comcast의 Xfinity 서비스는 1,500만 가구에 일 20억+ API 호출과 일 2억+ 신규 객체를 처리합니다. Cassandra의 긴 tail 레이턴시 문제를 해결하기 위해 60대의 캐시 서버를 두었으나, 캐시와 데이터베이스 간 일관성 유지가 큰 관리 부담이었습니다. ScyllaDB로 전환 후 외부 캐시 레이어를 완전히 제거하고 10배 레이턴시 개선과 2배 이상의 처리량을 달성했습니다.[4][3]

SecurityScorecard: Redis + Aurora → ScyllaDB

성과

  • 레이턴시 90% 감소 (4.5초 → 303ms)[5]
  • 연간 100만 달러 인프라 비용 절감[5]
  • 데이터 처리 파이프라인 30% 속도 향상[5]
  • Presto/Aurora 관련 프로덕션 장애 80% 감소[5]

SecurityScorecard는 1,200만 개 스코어카드를 처리하기 위해 Redis를 사용했으나, 가장 큰 Redis 인스턴스로도 확장에 한계가 있었고 Aurora는 쓰기 집약적 워크로드에서 레이턴시 스파이크 문제가 있었습니다. ScyllaDB Cloud로 전환하여 이러한 모든 문제를 해결했습니다.[5]

Grab: Redis 캐시 완전 제거

실험 세부 사항

Grab의 카운터 서비스는 Scylla + Redis 캐시 조합으로 운영 중이었습니다. 피크 시간에 수만 QPS를 처리하며, 각 요청은 평균 10개의 Scylla 조회를 수반합니다. Redis 캐시가 전체 요청의 50%를 처리했으나, 15분마다 캐시 미스로 인한 Scylla QPS 스파이크가 발생했습니다.[6][7]

점진적 제거 프로세스

  • 2024년 11월 5일~13일, 8일간 점진적 실험[6]
  • 5% → 25% → 35% → 75% → 100% 구성에 대해 캐시 비활성화[6]

결과

  • Redis 제거 후에도 서비스 성능 유지[7][6]
  • Scylla 자체 캐시 히트율 30% → 70%로 증가[6]
  • 전체 서비스 비용의 25% 차지하던 Redis 제거[7][6]
  • 평균 레이턴시 6-8ms → 7-12ms로 소폭 증가했으나, 추가 컴팩션 작업으로 원래 수준 회복[6]
  • Scylla CPU 사용률은 50% → 52%로 미미한 증가만 발생[6]

이 사례는 ScyllaDB의 내부 캐시가 Redis 외부 캐시를 충분히 대체할 수 있음을 실증했습니다.[7][6]

Expedia: Redis + Cassandra → ScyllaDB

성과

  • 35% 인프라 비용 절감[3]
  • P99 읽기 레이턴시 20-80ms → 일관되게 5ms[3]
  • Cassandra 대비 3배 처리량[3]

Expedia는 지리 정보 애플리케이션을 위해 Redis를 1차 캐시 레이어로, Cassandra를 2차 영구 저장소로 사용했습니다. Cassandra의 가비지 컬렉션 튜닝과 트래픽 버스트 시 P99 응답시간 영향이 주요 문제였습니다.[3]

ScyllaDB vs MongoDB 캐싱 워크로드 벤치마크

BenchANT가 수행한 독립적인 벤치마크에서 캐싱 워크로드(YCSB Workload A: 50% read, 50% update) 테스트 결과:[8][9]

처리량 비교

  • 소형 클러스터: ScyllaDB 77K ops/s vs MongoDB 5K ops/s
  • 중형 클러스터: ScyllaDB 306K ops/s vs MongoDB 17K ops/s
  • 대형 클러스터: ScyllaDB 894K ops/s vs MongoDB 45K ops/s

레이턴시

  • ScyllaDB는 모든 구성에서 P99 레이턴시 10ms 미만 달성[9][8]
  • MongoDB 업데이트 레이턴시는 ScyllaDB 대비 최대 68배 더 높음[9]
  • 읽기 레이턴시도 ScyllaDB가 2.8배 더 낮음[9]

비용 효율성

  • 소형: ScyllaDB가 12-16배 더 나은 ops/$ 제공[8][9]
  • 중대형: ScyllaDB가 18-20배 더 나은 ops/$ 제공[8][9]

심지어 3노드 ScyllaDB 클러스터가 18노드 MongoDB 클러스터보다 나은 성능을 보였습니다.[10][9]

ScyllaDB 내부 캐시 아키텍처의 핵심

ScyllaDB가 외부 캐시를 대체할 수 있는 이유는 독자적인 내부 캐시 설계에 있습니다:[11][12]

Linux 페이지 캐시 우회

ScyllaDB는 읽기 시 Linux 페이지 캐시를 완전히 우회하고 자체 row 기반 캐시를 사용합니다. Linux 페이지 캐시는 범용 캐시로 데이터베이스 특화 요구사항(부정적 캐싱, 중복 버퍼, 높은 CPU 오버헤드 등)에 비효율적이기 때문입니다.[12][11]

통합 캐시 설계

  • 쓰기 시 Commitlog → Memtable(RAM) → 플러시 시 SSTable(디스크)로 이동[13][11]
  • Memtable 플러시 시 내용을 캐시와 병합하여 메모리 효율 극대화[11]
  • 자주 액세스되는 데이터를 SSTable에서 RAM 캐시로 자동 승격[13]
  • 워크로드에 따라 동적으로 자가 튜닝되며 메모리 압력에 따라 확장/축소[12]

Cassandra와의 차이점

Apache Cassandra는 여러 경쟁하는 캐시들(row cache, key cache, chunk cache 등)을 수동으로 튜닝해야 하지만, ScyllaDB는 단일 통합 캐시로 자동 관리됩니다.[12]

성능 특성 요약

처리량

  • 단일 노드에서 100만+ ops/sec 달성 가능[14][15]
  • 클러스터로 확장 시 수억~수십억 ops/sec 달성[16][14]

레이턴시

  • P99 레이턴시 1ms 미만 (메모리 워크로드)[14][1]
  • P99 레이턴시 2-10ms (디스크 혼합 워크로드)[17][1]
  • 100만 ops/sec 이상에서도 single-digit ms 레이턴시 유지[18][19]

비용 효율

  • 동일 성능 대비 10분의 1 노드 수로 운영 가능[15][20]
  • 연간 수십만~수백만 달러 인프라 비용 절감 사례 다수[5][3]

제약사항과 고려사항

1. 메모리 효율성

순수 메모리 캐싱 측면에서 Memcached가 약 65% 더 많은 아이템을 저장할 수 있습니다. ScyllaDB는 영속성과 복잡한 쿼리 지원을 위한 추가 메타데이터가 필요합니다.[1]

2. 단순 Key-Value 워크로드

매우 단순한 key-value 조회만 필요하고 파이프라이닝이 가능한 경우, Memcached의 프로토콜이 더 가볍고 효율적입니다. ScyllaDB의 CQL 프로토콜은 더 풍부한 기능을 제공하지만 상대적으로 무겁습니다.[1]

3. 레이턴시 민감도

Redis는 1ms 미만의 극저지연이 필수적인 워크로드에 여전히 강점이 있습니다. ScyllaDB는 디스크 기반 시스템으로 1-10ms 범위의 레이턴시를 제공합니다.[21]

4. 학습 곡선

Redis/Memcached는 단순하고 빠른 설정이 가능한 반면, ScyllaDB는 데이터 모델링과 쿼리 패턴에 대한 더 깊은 이해가 필요합니다.[5]

결론: 언제 ScyllaDB가 캐시 대체로 적합한가

ScyllaDB는 다음 조건에서 Redis/Memcached를 효과적으로 대체할 수 있습니다:

적합한 경우

  • 데이터 영속성이 필요한 경우[1]
  • 수백만~수십억 개 이상의 대규모 데이터셋[1]
  • 복잡한 쿼리나 wide-column 데이터 모델 필요[1]
  • 외부 캐시와 데이터베이스 간 일관성 유지가 부담스러운 경우[3]
  • 1-10ms 레이턴시가 허용 가능한 경우[6][5][3]
  • 인프라 비용 절감이 중요한 경우[5][3]

부적합한 경우

  • 마이크로초~1ms 미만의 극저지연 필수[21]
  • 극도로 단순한 key-value 조회만 필요[1]
  • 매우 작은 데이터셋 (수백 MB 이하)[1]
  • 파이프라이닝이 핵심적인 워크로드[1]

실제 프로덕션 사례들(Comcast, Grab, SecurityScorecard, Expedia 등)은 ScyllaDB의 주장이 단순한 마케팅이 아니라 실제로 검증된 솔루션임을 보여줍니다. 특히 Grab의 사례는 동일한 워크로드에서 Redis를 완전히 제거하고도 성능을 유지하며 25%의 비용을 절감한 것으로, ScyllaDB의 내부 캐시가 외부 캐시 시스템을 충분히 대체할 수 있음을 실증합니다.[7][6]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87


Scylladb로 외부 캐쉬 대체 조사
https://kimjj81.github.io/2025/10/18/Scylladb로-외부-캐쉬-대체-조사/
Author
김 정진
Posted on
October 18, 2025
Licensed under