본문 바로가기

개발/Front-end

Vercel KV 에 대해서

반응형

 

애플리케이션을 개발하다 보면 데이터베이스를 도입하기엔 과한 경우가 있다. 예를 들어 다음과 같은 케이스가 있다.

 

  • 페이지 조회수, 클릭 수 같은 단순 카운트
  • 사용자 인증 이후 발급한 토큰 저장
  • 짧은 기간 동안 유지되는 캐시
  • 세션 정보 저장
  • 실시간성이 필요하지만 구조가 단순한 데이터

 

이런 경우에 RDB(Postgres 등)를 붙이면 구조 설계, 스키마 관리, 연결 관리 등 불필요한 오버헤드가 생긴다.

반면 Redis는 구축·설정 비용이 존재한다.

이 중간 지점을 해결하기 위한 서비스가 Vercel KV이다.

 

나는 서버리스 페이지 개발 중 db는 필요하진 않지만 조회수 트래킹이 필요한 상황이 생겼다. 어떻게 해결할지 고민하던 중 vercel의 KV에 대해 알게 되었다. 

 

 

2. Vercel KV의 구조와 개념

 

Vercel KV는 Redis를 기반으로 한 Fully-managed Key-Value 저장소다. 다음과 같은 특징을 갖는다.

 

 

단순한 Key-Value 모델

모든 데이터는 문자열 기반의 key로 관리되며 복잡한 쿼리는 불가능하다.

필요한 것은 특정 key에 대한 get/set/incr 같은 기본적인 연산이다.

 

import { kv } from "@vercel/kv";

 

서버리스 친화적인 사용 방식

 

Vercel에서 KV 인스턴스를 생성하면, 프로젝트에 자동으로 환경변수(KV_URL, KV_REST_API_URL, TOKEN 등)가 등록된다.

Next.js에서는 이를 import만으로 바로 사용할 수 있어 러닝 커브가 거의 없다.

 

 

3. 간단한 예제: 조회수 카운터 증가

 

Vercel KV의 사용성을 파악하기 위해 가장 간단한 조회수 증가 기능을 구현해볼 수 있다.

 

import { kv } from '@vercel/kv';

export async function GET() {
  const count = await kv.incr('page:home:views');
  return Response.json({ count });
}

 

  • incr 연산은 key가 존재하지 않을 경우 0에서 시작해 자동 생성된다.
  • 스키마 정의 없이 바로 동작한다.
  • 서버리스 API Route나 Edge Function에서도 동일하게 사용 가능하다.

 

이와 같은 간단한 형태의 데이터 처리에는 최적화되어 있다.

 

 

4. 장점 정리

설정이 거의 필요 없다

환경변수 자동 등록 → 바로 import 후 사용.

Redis 설치, 인프라 유지, Connection 관리가 필요 없다.

 

서버리스 환경과 자연스럽게 결합

Next.js와 Vercel 배포 구조에 최적화돼 있어 Edge 환경에서도 문제 없이 작동한다.

필요한 만큼만 사용하는 구조

Key-Value 기반이기 때문에 데이터 CRUD가 단순하며 관리 포인트가 적다.

 


 

5. 한계 및 고려 사항

Key-Value 구조에 한정됨

복잡한 관계형 데이터나 쿼리가 필요한 서비스에는 적합하지 않다.

데이터 용량 및 플랜 제한

무료 플랜 기준으로 용량과 동시 연결 제한이 있어 대규모 데이터를 저장하기 어렵다.

리전 관련 지연 가능성

한국 리전이 없기 때문에 대규모 요청에서 지연이 발생할 수도 있다.

 


 

6. Vercel KV가 적합한 곳 / 적합하지 않은 곳

적합한 사용 사례

  • 카운터(조회수, 클릭 수 등)
  • 간단한 인증 토큰 저장
  • 세션 관리
  • 캐싱
  • TTL(만료 시간)을 활용한 임시 저장 데이터

적합하지 않은 사용 사례

  • 정규화된 데이터가 필요한 서비스
  • 복잡한 조회나 필터링
  • 대규모 데이터 처리
  • Redis 고성능 기능을 충실히 활용해야 하는 경우

7. 결론

Vercel KV는 서버리스 환경에서 가볍게 사용할 수 있는 Key-Value 스토리지다.

설치 및 설정이 거의 없고 Next.js와 자연스럽게 결합된다는 점이 가장 큰 장점이다.

데이터 구조가 단순하고 고성능이나 복잡한 쿼리가 필요 없을 때 도입하면 효율적이다.

 

가벼운 프로젝트나 특정 기능 단위의 저장소로 활용하기에 적합하며,

전체 시스템의 주 데이터베이스로 사용하기에는 한계가 명확하다.

반응형