
애플리케이션을 개발하다 보면 데이터베이스를 도입하기엔 과한 경우가 있다. 예를 들어 다음과 같은 케이스가 있다.
- 페이지 조회수, 클릭 수 같은 단순 카운트
- 사용자 인증 이후 발급한 토큰 저장
- 짧은 기간 동안 유지되는 캐시
- 세션 정보 저장
- 실시간성이 필요하지만 구조가 단순한 데이터
이런 경우에 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와 자연스럽게 결합된다는 점이 가장 큰 장점이다.
데이터 구조가 단순하고 고성능이나 복잡한 쿼리가 필요 없을 때 도입하면 효율적이다.
가벼운 프로젝트나 특정 기능 단위의 저장소로 활용하기에 적합하며,
전체 시스템의 주 데이터베이스로 사용하기에는 한계가 명확하다.
'개발 > Front-end' 카테고리의 다른 글
| e.preventDefault();의 역할과 언제 사용해야 할까? (0) | 2025.02.13 |
|---|---|
| 웹 개발 스킬을 한단계 높여주는 프론트엔드 성능 최적화 - 3장 홈페이지 최적화 (0) | 2025.01.21 |
| 웹 개발 스킬을 한단계 높여주는 프론트엔드 성능 최적화 - 2장 올림픽 통계 서비스 최적화 (0) | 2025.01.20 |
| 웹 개발 스킬을 한단계 높여주는 프론트엔드 성능 최적화 - 1장 블로그 서비스 최적화 (0) | 2025.01.16 |
| ARIA 속성에 대하여 - 웹 접근성 (1) | 2024.10.09 |