Supabase란?
Supabase는 오픈소스 Firebase 대안으로, PostgreSQL 기반의 백엔드를 즉시 제공하는 BaaS(Backend as a Service) 플랫폼입니다. 데이터베이스, 인증, 스토리지, 실시간 구독 등을 하나의 플랫폼에서 사용할 수 있습니다.
주요 특징
| 항목 | 설명 |
|---|---|
| PostgreSQL | 완전한 PostgreSQL 데이터베이스 제공 (SQL 직접 사용 가능) |
| 인증 | 이메일/비밀번호, 소셜 로그인, Magic Link, SSO 지원 |
| 스토리지 | 파일 업로드/다운로드, 이미지 변환 기능 내장 |
| 실시간 | 데이터 변경을 실시간으로 구독 (WebSocket 기반) |
| Edge Functions | Deno 기반 서버리스 함수 |
| Row Level Security | PostgreSQL RLS로 행 단위 접근 제어 |
| 무료 플랜 | 2개 프로젝트, 500MB DB, 1GB 스토리지 무료 |
핵심 개념
Project
Supabase의 기본 단위입니다. 프로젝트 하나에 데이터베이스, 인증, 스토리지가 모두 포함됩니다. 프로젝트 생성 시 고유한 URL과 API Key가 발급됩니다.
API Key
Supabase는 두 가지 키를 제공합니다.
- anon (public) — 클라이언트에서 사용하는 공개 키. RLS 정책에 의해 접근이 제한됩니다.
- service_role — 서버에서만 사용하는 비공개 키. RLS를 우회하므로 절대 클라이언트에 노출하면 안 됩니다.
Row Level Security (RLS)
PostgreSQL의 행 단위 보안 정책입니다. 테이블별로 "누가 어떤 행을 읽고/쓸 수 있는지" 규칙을 정의합니다.
-- 예: 본인의 데이터만 조회 가능
CREATE POLICY "Users can view own data"
ON profiles FOR SELECT
USING (auth.uid() = user_id);
RLS가 중요한 이유
Supabase는 클라이언트에서 직접 DB에 접근하는 구조입니다. RLS를 설정하지 않으면 anon key로 모든 데이터에 접근할 수 있으므로, 테이블 생성 후 반드시 RLS를 활성화하세요.
Auto-generated API
테이블을 생성하면 RESTful API가 자동으로 만들어집니다. 별도의 백엔드 코드 없이 CRUD가 가능합니다.
GET /rest/v1/테이블명 — 조회
POST /rest/v1/테이블명 — 생성
PATCH /rest/v1/테이블명?id=eq.1 — 수정
DELETE /rest/v1/테이블명?id=eq.1 — 삭제
Supabase vs Firebase
| 비교 | Supabase | Firebase |
|---|---|---|
| 데이터베이스 | PostgreSQL (관계형) | Firestore (NoSQL) |
| 쿼리 | SQL 직접 사용 가능 | 독자적 쿼리 문법 |
| 오픈소스 | O (셀프 호스팅 가능) | X |
| 가격 | PostgreSQL 기반 예측 가능 | 읽기/쓰기 횟수 기반 |
| 실시간 | PostgreSQL 변경 감지 | 네이티브 실시간 동기화 |
다음 단계
Supabase의 기본 개념을 이해했다면 Next.js에 Supabase 적용하기에서 실제 프로젝트에 적용해 보세요.