Supabase Edge Functions
Supabase는 Firebase의 오픈소스 대안이다. 데이터베이스, 인증, 스토리지와 같은 Firebase의 기능과 유사한 도구 모음을 제공하며, 최근에는 서버리스 함수도 지원한다.
Supabase Edge Functions는 전 세계적으로 분산된 서버 사이드 TypeScript 함수이다. 사용자와 가까운 위치에서 실행되어 성능을 향상시킨다. 이러한 함수는 Deno를 사용해 개발되며, 향상된 보안과 모던 자바스크립트/TypeScript 런타임을 제공한다.
다음은 Supabase Edge Functions를 시작하는 방법이다:
1. 설정
사전 요구 사항
시작하기 전에 Supabase CLI가 설치되어 있는지 확인한다. 아직 설치하지 않았다면 공식 문서의 안내를 따라 설치한다.
새 프로젝트 생성하기
터미널이나 커맨드라인을 연다.
로컬 머신의 디렉터리에 새로운 Supabase 프로젝트를 생성하려면 다음 명령어를 실행한다:
supabase init이 명령어는 현재 디렉터리에 새로운 Supabase 프로젝트를 초기화한다.
Edge Function 추가하기
- Supabase 프로젝트 내부에서
hello-world라는 이름의 새 Edge Function을 생성한다:
supabase functions new hello-world이 커맨드를 실행하면 프로젝트에 지정한 이름으로 새 Edge Function이 생성된다.
2. Hello World
hello-world 함수를 수정하려면 supabase/functions/hello-world/index.ts 파일을 편집한다:
import { Hono } from 'jsr:@hono/hono'
// 이 부분을 여러분의 함수 이름으로 변경
const functionName = 'hello-world'
const app = new Hono().basePath(`/${functionName}`)
app.get('/hello', (c) => c.text('Hello from hono-server!'))
Deno.serve(app.fetch)3. 실행
로컬에서 함수를 실행하려면 다음 명령어를 사용한다.
- 다음 명령어로 함수를 실행한다:
supabase start # supabase 스택 시작
supabase functions serve --no-verify-jwt # Functions 감시자 시작--no-verify-jwt 플래그를 사용하면 로컬 개발 중 JWT 검증을 생략할 수 있다.
- cURL이나 Postman을 사용해
http://127.0.0.1:54321/functions/v1/hello-world/hello로 GET 요청을 보낸다:
curl --location 'http://127.0.0.1:54321/functions/v1/hello-world/hello'이 요청은 "Hello from hono-server!"라는 텍스트를 반환한다.
4. 배포
Supabase에서 모든 Edge Functions를 한 번에 배포할 수 있다. 다음 커맨드를 실행하면 된다:
supabase functions deploy또는 배포할 Edge Functions의 이름을 지정해 개별적으로 배포할 수도 있다:
supabase functions deploy hello-world더 다양한 배포 방법이 궁금하다면 Supabase 공식 문서의 Deploying to Production 섹션을 참고한다.