Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Cloudflare Workers KV vs Upstash Redis, 무엇을 선택해야 할까?

Cloudflare Workers를 사용하고 있다면 데이터 저장을 위해 Upstash Global RedisWorkers KV가 가장 좋은 선택지가 될 것입니다. 이 글에서는 Cloudflare Workers 환경에서 데이터 스토어로 활용할 때 두 서비스를 주요 기준으로 비교해 보겠습니다.

기능 비교

Workers KV는 만료(expiration) 기능을 갖춘 단순한 키-값(Key-Value) 저장소 API를 제공합니다.

put(key, value, {expiration: secondsSinceEpoch})
get(key)
delete(key)
list({prefix?: string, limit?: number, cursor?: string})

반면 Upstash Redis는 Strings, Sets, Lists, Hashes, Sorted Sets 등 훨씬 다양한 자료구조와 방대한 API를 지원합니다. 복잡한 데이터 조작이 필요하다면 Upstash가 분명히 유리합니다.

가격 비교

Upstash Global Redis:

  • 읽기: 10만 건당 $0.4
  • 쓰기: 10만 건당 $2
  • 스토리지: GB당 월 $0.25

Cloudflare Workers KV:

  • 읽기: 100만 건당 $0.5
  • 쓰기: 100만 건당 $5
  • 스토리지: GB당 월 $0.50

단위를 통일해 계산하면 읽기는 약 4배, 쓰기는 약 2.5배 Workers KV가 더 저렴합니다. 대량의 트래픽을 처리하는 경우 비용 차이가 상당할 수 있습니다.

이식성(Portability)

Upstash는 Redis 프로토콜과 완전히 호환됩니다. 따라서 노트북을 포함해 Redis를 실행할 수 있는 어디에서든 손쉽게 데이터를 옮길 수 있습니다.

반면 Workers KV는 Cloudflare Workers 환경에서만 사용 가능하므로 벤더 종속성(vendor lock-in)이 발생한다는 점을 고려해야 합니다.

읽기 지연 시간(Read Latency)

Upstash Global은 5개 리전(버지니아 북부, 오리건, 프랑크푸르트, 싱가포르, 상파울루)에 데이터를 분산 저장합니다. 클라이언트 위치에 따라 읽기 지연 시간은 10~80밀리초 수준입니다.

지역별 읽기 지연 시간은 다음과 같습니다:

  • 미국: 10~20ms
  • 독일: 10~20ms
  • 브라질: 10~20ms
  • 영국: 20~30ms
  • 스페인: 30~40ms
  • 인도: 50~60ms
  • 남아프리카공화국: 100~200ms

Workers KV는 자주 읽지 않는 값은 중앙에 저장하고, 인기 있는 값은 모든 Cloudflare 데이터 센터에 캐싱하는 방식으로 동작합니다. 최초 읽기는 지연 시간이 높지만(200ms 이상), 이후 읽기는 10~30밀리초 수준으로 빨라집니다. 전 세계 곳곳에 PoP(Point of Presence)를 두고 있기 때문에 지역에 관계없이 비슷한 읽기 성능을 보장합니다.

클라이언트가 Upstash의 5개 리전 근처에 있다면 두 서비스의 읽기 지연 시간은 크게 차이 나지 않습니다. Cloudflare가 Workers와 KV를 같은 데이터 센터에서 운영한다고 가정했을 때 Workers KV의 지연 시간이 훨씬 더 좋을 것이라 예상했는데, 놀랍게도 결과는 그렇지 않았습니다. 추후 더 정교한 벤치마크를 진행해 별도의 포스트로 공개할 계획입니다.

다만 남아프리카공화국처럼 Upstash 리전에서 먼 지역의 클라이언트에게는 Cloudflare Workers KV가 더 나은 읽기 성능을 제공합니다.

데이터 일관성(Consistency)

Workers KV와 Upstash Global Redis 모두 최종 일관성(Eventual Consistency) 모델을 따릅니다. 즉, 클라이언트는 결국 최신 값을 읽게 되지만, 특정 시점에 모든 클라이언트가 동일하거나 최신의 값을 읽는다는 보장은 없습니다.

글로벌하게 분산되면서 강한 일관성(strong consistency)을 제공하는 데이터베이스가 필요하다면 Google Cloud Spanner, CockroachDB 또는 Fauna를 검토해 보시기 바랍니다.

쓰기 지연 시간(Write Latency)

Upstash는 업데이트를 글로벌 리전에 즉시 복제하며, 모든 리전에 복제가 완료되기까지 300~500밀리초가 소요됩니다. 반면 Cloudflare의 경우 업데이트가 다른 모든 데이터 센터로 전파되는 데 최대 60초까지 걸릴 수 있습니다.

쓰기 처리량(Write Throughput)

Cloudflare Workers KV에는 초당 동일 키에 대해 1회의 쓰기 연산만 허용하는 하드 리밋(hard limit)이 있습니다. 반면 Upstash Redis에는 이러한 제약이 없으며, 요금제 용량(Pay-as-you-go, Enterprise 등)에 따라 초당 수천 번의 쓰기 명령을 실행할 수 있습니다.

따라서 초당 1회 쓰기 제한은 Workers KV를 읽기 전용 혹은 읽기 중심(read-heavy) 사용 사례로 한정시키는 요인이 됩니다.

결론

정리하면 다음과 같습니다:

  • 단순한 키-값 저장 + 읽기 위주 + 낮은 비용 → Cloudflare Workers KV가 적합
  • 다양한 자료구조 + 높은 쓰기 처리량 + Redis 호환성 → Upstash Redis가 적합

참고 링크

How Workers KV Works
Workers KV Runtime APIs
Upstash Global Database