Framework

Supabase 완전 정복: 오픈소스 Firebase 대안의 모든 것

Joonfluence 2025. 5. 7. 13:42

1. Supabase란?

Supabase는 오픈 소스 기반의 BaaS(Backend as a Service) 플랫폼으로, Firebase와 유사한 기능을 제공하면서도 PostgreSQL을 백엔드 엔진으로 사용하는 것이 가장 큰 특징입니다. 복잡한 서버 구성 없이도 사용자 인증, 데이터베이스 관리, 파일 스토리지, 실시간 데이터 동기화, 서버리스 함수 등을 손쉽게 구성할 수 있어, 프론트엔드 중심의 개발 환경에서 빠르게 백엔드를 구축할 수 있습니다.

Supabase는 "Firebase를 오픈소스로 다시 만든다면 어떤 모습일까?"라는 질문에서 시작된 프로젝트입니다.

2. 주요 기능 및 아키텍처 구성

기능 설명
Authentication (Auth) 다양한 인증 방식(이메일/비밀번호, 매직 링크, OTP, 소셜 로그인, SSO) 제공. JWT 기반. PostgreSQL의 행 수준 보안(RLS) 과 연동하여 세밀한 권한 설정 가능
PostgreSQL Database 모든 프로젝트는 전용 PostgreSQL 인스턴스를 사용. SQL 기반 데이터 모델링 및 트랜잭션(ACID) 지원. 대시보드를 통해 시각적으로 테이블 생성/쿼리 가능
Auto-generated REST API 데이터베이스 스키마를 기반으로 즉시 RESTful API 제공. 직접 서버 코드를 작성하지 않아도 CRUD API가 자동으로 생성됨. RLS와 연계 가능
Storage 이미지, PDF, 동영상 등 대용량 파일 저장 지원. 파일에 대한 RLS 정책 적용 가능
Realtime DB의 데이터 변경 이벤트(삽입, 수정, 삭제)를 실시간으로 감지하여 프론트엔드에 반영. WebSocket 기반으로 채팅, 알림 등에 적합
Edge Functions Deno 기반의 서버리스 함수로, 클라우드 엣지에서 코드를 실행하여 빠른 응답을 보장함. 클라이언트 요청에 대한 커스텀 로직 수행 가능
Client SDKs JavaScript, TypeScript, Flutter, Python, Go 등 다양한 언어와 프레임워크용 SDK 제공. API 요청 시 자동으로 인증 토큰을 포함함

3. Supabase vs Firebase: 왜 Supabase를 선택할까?

항목 Firebase Supabase
데이터베이스 NoSQL (Firestore) SQL (PostgreSQL)
실시간 기능 있음 있음 (Postgres 기반)
인증 Firebase Auth Supabase Auth (JWT + RLS 연동)
스토리지 Firebase Storage Supabase Storage (RLS 연동 가능)
서버리스 함수 Cloud Functions (Node.js) Edge Functions (Deno 기반)
오픈소스 여부 비공개 완전한 오픈소스
커스터마이징 자유도 낮음 높음
가격 정책 트랜잭션 기준 저장 데이터 기준

관계형 데이터 모델이 필요한 프로젝트, GDPR 등 보안 정책 준수가 중요한 프로젝트,
또는 오픈소스 도입을 원하는 팀에 적합합니다.

이 중에서도 Supabase는 오픈 소스 프로젝트이기 때문에 자체적으로 서버를 구축(Self-host) 하여 사용하는 것이 가능합니다.
오픈 소스라는 점은 Supabase의 강력한 장점 중 하나로 언급되며 이를 통해 개발자는 소스 코드를 자유롭게 얻어 원하는 환경에 직접 배포하고 운영할 수 있습니다.

소스에 따르면 Supabase 스택을 클라우드에 직접 호스팅하거나 로컬 환경에서 실행하는 것이 가능하다고 명시되어 있으며, 특히 보안상의 이유로 특정 국가의 서버나 방화벽 내에 서버를 두어야 할 경우, Supabase 서버를 직접 띄울 수 있다고 합니다. Supabase 공식 문서에서도 Self-Hosting에 대한 가이드를 제공하고 있습니다.

예시로 파일 업로드 상황을 들어 셀프 호스팅 할 경우를 설명하면, Supabase만 쓰고도 S3 연동 자동으로 되지만, 셀프 호스팅할 때는 AWS에 직접 비용을 지불해야 합니다. 자체 호스팅 시에는 이 Storage 소프트웨어 구성 요소를 실행하고 실제로 파일을 저장할 수 있는 물리적인 또는 클라우드 기반의 스토리지 인프라를 사용자가 직접 준비해야 하기 때문입니다. 

4. 실전 예시: Supabase SDK 활용

1) 사용자 로그인

const { data, error } = await supabase.auth.signInWithPassword({   
  email: 'dev@example.com',   
  password: 'securepass123' 
});

2) 게시글 데이터 삽입

const { data, error } = await supabase.from('posts').insert([{ 
  title: 'Hello Supabase', 
  body: 'Getting started!' 
}]);

3) 실시간 구독

const channel = supabase.channel('public:posts').on('postgres_changes', {     
  event: 'INSERT',     
  schema: 'public',     
  table: 'posts',   
}, payload => {     
  console.log('New post:', payload.new);   
})   
.subscribe();`

4) 스토리지에 파일 업로드

const { data, error } = await supabase.storage
    .from('avatars')
    .upload('public/avatar.png', file);

5. 실제 사용 시 주의점 및 팁

  • 행 수준 보안(RLS) 꼭 설정하세요
    Supabase의 강력한 보안 모델이지만, RLS는 비활성화 상태가 기본입니다. 민감 데이터에 대한 접근 제어를 위해 반드시 RLS 정책을 활성화하고 테스트해야 합니다.
  • 무료 플랜은 학습과 테스트에 적합
    실시간 연결 수, 저장 용량, API 호출 수 등에 제한이 있습니다.
    또한 월간 활성 사용자(MAU) 수에 따라 요금이 부과되어, 트래픽이 많아지면 (약 100,000명 이상) 유료 플랜 업그레이드가 필요합니다.
  • PostgreSQL 학습이 장점으로 작용
    Firebase의 문서형 구조에 익숙한 개발자라면 초반 진입장벽이 느껴질 수 있으나, SQL을 익히면 데이터 모델링과 쿼리에서 큰 장점을 누릴 수 있습니다.
  • Edge Functions는 Deno 기반
    기존 Node.js 생태계와는 다르기 때문에 익숙해지는 데 약간의 시간이 필요할 수 있습니다.

6. 도입에 적합한 팀/상황

  • 빠르게 MVP를 개발하고자 하는 스타트업 팀
  • Firebase의 비용, 커스터마이징 제약에 고민하는 팀
  • 관계형 데이터 모델링이 중요한 SaaS/비즈니스 로직 기반 앱
  • 보안이 중요한 내부 시스템이나 B2B 서비스

7. 공식 문서 및 참고 자료

반응형