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

넷리파이(Netlify) 엣지 함수와 서버리스 Redis로 시작하는 엣지 애플리케이션 개발

최근 넷리파이(Netlify)는 엣지 함수(Edge Functions)를 공개했습니다. 엣지 함수는 전 세계에 분산된 엣지 로케이션에서 Deno 런타임 기반으로 코드를 실행할 수 있어, 지연 시간을 최소화하면서 빠른 응답을 제공합니다.

이 글에서는 넷리파이 엣지 함수를 실행하고, 데이터 저장소로 Upstash Redis에 접근하는 간단한 앱을 만들어 보겠습니다. Upstash Redis가 넷리파이 엣지 함수와 완벽하게 어울리는 이유는 다음과 같습니다.

  • 글로벌 데이터베이스: Upstash Redis의 Global 데이터베이스 타입은 Redis 복제본(replica)을 전 세계에 분산 배치합니다. 따라서 엣지 함수는 가장 가까운 리전에 접근해 낮은 지연 시간으로 동작합니다.
  • 내장 REST API 및 SDK: 서버리스 런타임에서 자주 발생하는 커넥션 관련 문제에서 자유롭습니다.
  • Deno 지원 JS SDK: Upstash Redis의 JS SDK는 Deno 런타임에서 빌드되고 테스트되었습니다.

프로젝트 설정

아래 단계를 건너뛰고 싶다면 예제 폴더를 바로 확인하셔도 좋습니다.

먼저 비어 있는 Node 프로젝트를 생성(npm init)한 뒤, netlify > edge-functions 디렉터리 아래에 hello.js 파일을 다음과 같이 작성합니다.

hello.js

import { Redis } from "https://deno.land/x/upstash_redis@v1.3.2/mod.ts";

export default async () => {
  const redis = Redis.fromEnv();
  const counter = await redis.incr("edge_counter");
  return new Response(counter);
};

다음으로 프로젝트 폴더에 netlify.toml 파일을 만들고, 엣지 함수 경로를 지정합니다.

netlify.toml

[[edge_functions]]
path = "/test"
function = "hello"

그리고 프로젝트 폴더에 .env 파일을 생성합니다.

.env

UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=

이제 Upstash 콘솔에서 Redis 데이터베이스를 생성합니다. 이때 Global 데이터베이스를 선택하면 엣지 함수에서의 지연 시간을 최소화할 수 있습니다. Upstash 대시보드에서 REST_URL과 REST_TOKEN을 복사해 .env 파일에 붙여넣습니다.

테스트 및 배포

로컬 환경에서는 다음 명령어로 앱을 실행할 수 있습니다.

netlify dev

서버가 실행되면 https://localhost:8888/test에 접속해 결과를 확인합니다. 요청할 때마다 카운터 값이 1씩 증가하는 것을 볼 수 있습니다.

배포 역시 간단합니다. 넷리파이 대시보드에서 앱을 배포하면 되는데, 이때 Netlify 환경 변수에 Upstash URL과 Token을 반드시 등록해야 합니다.

마무리

이번 글에서는 넷리파이 엣지 함수에서 Upstash Redis를 활용하는 방법을 살펴보았습니다. 글로벌 분산 데이터베이스와 REST 기반 SDK 덕분에 엣지 환경에서도 안정적이고 빠른 데이터 처리가 가능합니다.

문제가 발생하거나 피드백이 있다면 GitHub, Discord, Twitter를 통해 언제든지 문의해 주세요.