데이터베이스와 클라이언트가 같은 리전(region)에 있다면 Redis는 1ms의 지연 시간을 손쉽게 달성할 수 있습니다. 하지만 클라이언트가 전 세계에 분산되어 있는 경우 지연 시간은 100ms를 넘어섭니다. Upstash는 이 문제를 해결하기 위해 에지 캐싱(Edge Caching)을 개발했습니다.
에지 캐싱이란?
에지 캐싱은 CDN처럼 전 세계 곳곳의 엣지(edge) 위치에 REST 응답을 캐싱하는 방식입니다. 에지 캐싱을 활성화하면 평균 5ms의 글로벌 지연 시간을 확인할 수 있습니다. 실제로 10개 서로 다른 리전에 위치한 클라이언트에서 지연 시간을 측정한 벤치마크 애플리케이션을 통해 검증했으며, 에지 URL로 전송한 요청과 일반 REST URL로 전송한 요청의 지연 시간을 비교했습니다. 그 결과, 서버와 클라이언트 사이의 물리적 거리가 멀어질수록 에지 캐싱의 효과는 더욱 커지는 것을 확인했습니다.
직접 테스트해 보고 싶다면 벤치마크 페이지에서 직접 실행해 볼 수 있습니다.
주요 활용 사례
웹/모바일(백엔드리스) 클라이언트
Upstash는 읽기 전용 인증 토큰을 제공하여 사용자가 백엔드 없이도 데이터베이스에 접근할 수 있도록 지원합니다. 웹이나 모바일 애플리케이션에서 Redis에 직접 접근할 수 있으며, 이 아키텍처에서는 클라이언트가 어디에든 위치할 수 있습니다. 따라서 사용자와 가장 가까운 위치에 데이터를 캐싱해 두는 것이 매우 효과적인 전략입니다.
멀티 리전 서버리스 아키텍처
AWS Lambda 함수를 여러 리전에서 실행하면 글로벌 지연 시간을 줄일 수 있습니다. Vercel이나 Netlify의 함수 역시 설정에 따라 서로 다른 리전에서 실행됩니다. 에지 캐싱이 적용된 서버리스 Redis를 사용하면 서버리스 함수가 어느 리전에서 실행되든 항상 빠른 데이터 접근이 가능합니다.
엣지 함수(Edge Functions)
엣지 컴퓨팅(Cloudflare Workers 등)은 전 세계 어디서나 빠르게 동작하는 애플리케이션을 구축하는 인기 있는 방법으로 자리 잡고 있습니다. 다만 엣지 함수 환경에서는 데이터를 저장할 수 있는 선택지가 많지 않다는 것이 과제입니다. 낮은 지연 시간과 가벼운 특성을 갖춘 에지 캐싱 기반 Redis는 엣지 함수와 매우 잘 어울리는 조합입니다.
시작하기
에지 캐싱은 Upstash 콘솔에서 활성화할 수 있습니다. 단, 에지 캐싱에는 추가 비용이 발생한다는 점에 유의하세요.
에지 캐싱을 활성화하면 REST API 대화 상자에서 Edge URL을 확인할 수 있습니다. 에지 캐싱은 GET 요청에만 적용되며, 데이터 변경(POST) 작업은 기존의 일반 REST API를 그대로 사용하면 됩니다.
기본적으로 캐시된 응답은 30초 후 만료되며, Cache-Control: max-age=<seconds> 헤더를 통해 만료 시간을 조절할 수 있습니다.
예시:
curl https://us1-smart-bunny-32732.edge-c.upstash.io/get/foo \
-H "Authorization: Bearer 2dfgf98elrg0w009c842z2adfdde9132"
-H "Cache-Control: max-age=50"
위 URL에 대한 첫 번째 요청은 오리진(origin)에서 응답을 가져옵니다. 이후의 요청들은 엣지 위치에서 응답을 받으며, 캐시된 응답은 각 엣지 위치에서 50초 후 만료됩니다.
에지 캐싱 vs 글로벌 데이터베이스
Redis를 여러 리전에 복제하여 글로벌 데이터베이스를 구축하는 것도 로드맵에 포함되어 있으며, 현재는 이미 출시된 상태입니다. 글로벌 데이터베이스는 쓰기 작업까지 복제하기 때문에 더 강력한 일관성 보장과 개선된 쓰기 지연 시간을 제공합니다. 하지만 모든 리전에 데이터베이스를 복제하는 것은 상당한 비용이 들 수 있습니다. 게다가 모든 위치에서 지연 시간을 최소화하려면 캐싱이 여전히 필요할 수 있습니다. 즉, 에지 캐싱과 글로벌 복제는 경쟁 관계가 아니라 서로를 보완하는 솔루션입니다. 사용 사례가 최종 일관성(eventual consistency) 읽기를 허용한다면, 에지 캐싱만으로도 글로벌하게 빠른 데이터를 제공하는 훌륭한 해결책이 됩니다.
서버리스와 엣지 데이터 분야에서의 노력에 대해 여러분의 의견을 기다립니다. Twitter와 Discord 커뮤니티에서 언제든 이야기를 나눠 주세요.