Contents
see List개요
Supabase는 Firebase의 오픈소스 대안으로 등장한 Backend-as-a-Service(BaaS) 플랫폼입니다. PostgreSQL을 기반으로 실시간 구독, 인증, 스토리지, Edge Functions까지 제공하며, 2024년 이후 엔터프라이즈 시장에서도 빠르게 채택되고 있습니다. 이 글에서는 Supabase의 핵심 기능과 실전 활용 패턴을 깊이 있게 다룹니다.
핵심 개념
Supabase의 아키텍처는 PostgreSQL 위에 여러 오픈소스 도구를 조합한 구조입니다. GoTrue(인증), PostgREST(자동 REST API), Realtime(WebSocket 기반 실시간 구독), Storage(S3 호환 파일 저장소)가 핵심 컴포넌트입니다.
가장 큰 장점은 Row Level Security(RLS)입니다. 데이터베이스 레벨에서 접근 제어를 설정할 수 있어, API 서버 없이도 안전한 클라이언트 직접 접근이 가능합니다. RLS 정책은 SQL로 작성하며, auth.uid() 함수로 현재 인증된 사용자를 참조할 수 있습니다.
또한 Supabase는 PostgreSQL의 모든 기능을 그대로 사용할 수 있습니다. 트리거, 함수, 뷰, 인덱스, CTE 등 관계형 데이터베이스의 강력한 기능을 BaaS 환경에서 활용할 수 있다는 점이 Firebase와의 가장 큰 차별점입니다.
실전 예제
Supabase에서 RLS 정책을 설정하고 데이터를 조회하는 기본 패턴입니다.
-- 테이블 생성
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
content TEXT,
user_id UUID REFERENCES auth.users(id),
created_at TIMESTAMPTZ DEFAULT now()
);
-- RLS 활성화
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;
-- 읽기 정책: 모든 사용자가 published 게시물 조회 가능
CREATE POLICY "공개 게시물 조회" ON posts
FOR SELECT USING (is_published = true);
-- 쓰기 정책: 본인 게시물만 수정 가능
CREATE POLICY "본인 게시물 수정" ON posts
FOR UPDATE USING (auth.uid() = user_id);
JavaScript 클라이언트에서의 활용 예제입니다.
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)
// 실시간 구독
const channel = supabase
.channel('posts-changes')
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'posts' },
(payload) => console.log('새 게시물:', payload.new)
)
.subscribe()
// 데이터 조회 with 페이징
const { data, count } = await supabase
.from('posts')
.select('*', { count: 'exact' })
.order('created_at', { ascending: false })
.range(0, 9)
활용 팁
- Database Functions 활용: 복잡한 비즈니스 로직은 PostgreSQL 함수로 작성하고 supabase.rpc()로 호출하면 네트워크 왕복을 줄일 수 있습니다.
- Edge Functions: Deno 기반의 서버리스 함수로, 외부 API 연동이나 복잡한 서버 로직을 처리할 수 있습니다. Cold start가 매우 빠릅니다.
- 타입 자동 생성: supabase gen types typescript 명령으로 DB 스키마에서 TypeScript 타입을 자동 생성할 수 있어 타입 안전성을 확보할 수 있습니다.
- 마이그레이션 관리: supabase db diff로 스키마 변경사항을 추적하고, supabase db push로 배포할 수 있습니다.
- 성능 모니터링: Supabase Dashboard의 Query Performance 탭에서 느린 쿼리를 식별하고 인덱스를 추가할 수 있습니다.
마무리
Supabase는 PostgreSQL의 강력함과 BaaS의 편의성을 결합한 플랫폼입니다. RLS를 통한 보안, 실시간 구독, Edge Functions 등을 활용하면 별도의 백엔드 서버 없이도 프로덕션 수준의 애플리케이션을 구축할 수 있습니다. 특히 Next.js와의 조합은 풀스택 개발의 새로운 표준으로 자리잡고 있습니다.