시작

Supabase

작성일 2026.06.28 수정일 2026.06.28 조회 13

기본 정보

항목내용
명칭Supabase
영문명Supabase
분류Backend as a Service, Database Platform
개발사Supabase
최초 공개N/A
주요 용도데이터베이스, 인증, 파일 저장소, 실시간 기능, 서버리스 함수, API 제공
관련 기술PostgreSQL, REST API, Authentication, Realtime, Storage, Edge Functions

개요

Supabase는 PostgreSQL을 기반으로 애플리케이션 개발에 필요한 백엔드 기능을 제공하는 개발 플랫폼이다. Supabase 공식 홈페이지에서는 Supabase를 “Postgres development platform”으로 소개하며, 프로젝트를 빠르게 시작하고 확장할 수 있도록 데이터베이스, 인증, API, 서버리스 함수, 실시간 기능, 스토리지, 벡터 기능을 함께 제공한다고 설명한다.1(#ref1)

일반적으로 웹 서비스나 모바일 앱을 만들 때는 데이터베이스, 로그인, 파일 업로드, API 서버, 권한 관리 등을 직접 구성해야 한다. Supabase는 이러한 기능을 하나의 플랫폼에서 제공하여 개발자가 백엔드의 기본 구조를 빠르게 만들 수 있도록 돕는다.

Supabase는 특히 스타트업, SaaS 서비스, 관리자 페이지, 커뮤니티 서비스, AI 애플리케이션, 모바일 앱 개발에서 많이 사용된다. 공식 문서에서도 React, Next.js, Vue, Flutter, iOS, Android 등 다양한 프레임워크와 플랫폼을 위한 시작 문서를 제공한다.3(#ref3)

동작 원리

Supabase는 애플리케이션과 PostgreSQL 데이터베이스 사이에 필요한 백엔드 기능을 미리 제공하는 방식으로 동작한다. 개발자는 Supabase 프로젝트를 만들고, 데이터베이스 테이블과 권한 정책을 설정한 뒤, 클라이언트 애플리케이션에서 Supabase SDK나 API를 통해 데이터를 읽고 쓸 수 있다.

사용자

↓

웹 / 모바일 애플리케이션

↓

Supabase SDK 또는 API

↓

Supabase 서비스
(Auth, Database, Storage, Realtime, Edge Functions)

↓

PostgreSQL Database

↓

결과 반환

예를 들어 사용자가 로그인하면 Supabase Auth가 인증을 처리하고, 애플리케이션은 로그인한 사용자의 권한에 따라 데이터베이스에 접근한다. 파일을 업로드해야 할 때는 Supabase Storage를 사용하고, 데이터 변경을 실시간으로 반영해야 할 때는 Realtime 기능을 사용할 수 있다.

주요 특징

  • PostgreSQL 기반의 데이터베이스를 제공한다.2(#ref2)
  • 사용자 회원가입, 로그인, OAuth, passwordless 로그인 등을 관리할 수 있는 Auth 기능을 제공한다.2(#ref2)
  • 데이터베이스 테이블을 기반으로 즉시 사용할 수 있는 API를 제공한다.1(#ref1)
  • 파일 저장, 관리, 변환, 제공을 위한 Storage 기능을 제공한다.2(#ref2)
  • 데이터 변경 사항을 실시간으로 구독할 수 있는 Realtime 기능을 제공한다.2(#ref2)
  • 서버 측 코드를 실행할 수 있는 Edge Functions를 제공한다.2(#ref2)
  • Vector embeddings 저장, 인덱싱, 검색을 위한 Vector 기능을 제공한다.1(#ref1)
  • 오픈소스 기반이며 self-hosting이 가능하다고 설명한다.1(#ref1)
  • 다양한 프레임워크용 Quickstart 문서를 제공한다.3(#ref3)

코드 예제

아래 예제는 JavaScript에서 Supabase 클라이언트를 생성하고 todos 테이블의 데이터를 조회하는 기본 형태이다.

import { createClient } from '@supabase/supabase-js';

const supabaseUrl = 'https://your-project.supabase.co';
const supabaseKey = 'your-anon-key';

const supabase = createClient(supabaseUrl, supabaseKey);

const { data, error } = await supabase
    .from('todos')
    .select('*');

if (error) {
    console.error(error);
} else {
    console.log(data);
}

아래 예제는 이메일과 비밀번호를 사용해 회원가입을 처리하는 기본 형태이다.

const { data, error } = await supabase.auth.signUp({
    email: 'user@example.com',
    password: 'password1234',
});

if (error) {
    console.error(error.message);
} else {
    console.log(data.user);
}

아래 예제는 avatars 버킷에 파일을 업로드하는 기본 형태이다.

const file = document.querySelector('input[type="file"]').files[0];

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

if (error) {
    console.error(error.message);
} else {
    console.log(data.path);
}

비교

항목SupabaseFirebase직접 백엔드 구축
주요 기반PostgreSQL 중심Firebase 서비스 생태계개발자가 선택
데이터베이스관계형 데이터베이스 중심NoSQL 성격의 데이터베이스 중심PostgreSQL, MySQL, MongoDB 등 선택 가능
인증 기능제공제공직접 구현 필요
파일 저장소제공제공직접 구축 또는 외부 서비스 연동
실시간 기능제공제공직접 구현 필요
서버 코드 실행Edge Functions 제공Cloud Functions 계열 사용서버 또는 서버리스 환경 직접 구성
장점PostgreSQL 기반이라 SQL과 관계형 모델에 익숙한 개발자에게 적합빠른 앱 개발과 Google 생태계 연동에 적합자유도가 높고 구조를 원하는 대로 설계 가능
단점플랫폼 구조와 권한 정책을 이해해야 함관계형 데이터 모델이 필요한 경우 설계 방식이 다를 수 있음개발 및 운영 부담이 큼

장점

  • 백엔드 기본 기능을 빠르게 구성할 수 있다.
  • PostgreSQL을 기반으로 하기 때문에 SQL과 관계형 데이터 모델을 활용하기 좋다.
  • 인증, 데이터베이스, 스토리지, 실시간 기능을 하나의 플랫폼에서 사용할 수 있다.
  • API 서버를 처음부터 직접 만들지 않아도 기본적인 데이터 접근이 가능하다.
  • Row Level Security를 활용해 데이터 접근 권한을 세밀하게 관리할 수 있다.
  • 오픈소스 기반이므로 플랫폼 구조를 이해하고 필요에 따라 self-hosting을 고려할 수 있다.1(#ref1)
  • 다양한 프레임워크 예제가 있어 초기 학습에 도움이 된다.3(#ref3)

단점

  • PostgreSQL, 인증, 권한 정책, Row Level Security 개념을 함께 이해해야 한다.
  • 보안 정책을 잘못 설정하면 의도하지 않은 데이터 접근 문제가 생길 수 있다.
  • 프로젝트 규모가 커질수록 데이터베이스 설계와 마이그레이션 관리가 중요해진다.
  • 모든 기능을 Supabase 방식에 맞춰 사용하는 경우 플랫폼 의존성이 생길 수 있다.
  • 복잡한 비즈니스 로직은 Edge Functions나 별도 서버 구조로 분리해야 할 수 있다.

실무 활용

  • 회원가입과 로그인이 필요한 웹 서비스
  • 관리자 페이지와 내부 운영 도구
  • SaaS 서비스의 초기 백엔드
  • 게시판, 커뮤니티, 댓글 시스템
  • 이미지나 문서 업로드가 필요한 서비스
  • 실시간 채팅, 알림, 협업 기능
  • 모바일 앱의 백엔드
  • AI 서비스에서 벡터 데이터 저장과 검색 기능
  • MVP 개발과 프로토타입 제작

실무 메모

  • Supabase를 사용할 때는 데이터베이스 테이블 설계를 먼저 정리하는 것이 좋다.
  • 공개 가능한 데이터와 보호해야 할 데이터를 구분해야 한다.
  • Row Level Security를 활성화한 뒤 정책을 명확하게 작성해야 한다.
  • 클라이언트에 노출해도 되는 키와 노출하면 안 되는 키를 구분해야 한다.
  • 운영 환경에서는 마이그레이션 관리 방식을 미리 정해야 한다.
  • Storage를 사용할 때는 버킷 공개 여부와 파일 접근 정책을 확인해야 한다.
  • Realtime 기능은 필요한 테이블과 이벤트에만 적용하는 것이 좋다.
  • Edge Functions에는 클라이언트에서 처리하면 안 되는 서버 측 로직을 배치하는 것이 좋다.
  • 로컬 개발 환경과 배포 환경의 설정값을 분리해서 관리해야 한다.
  • 서비스가 성장하면 데이터베이스 인덱스, 쿼리 성능, 백업 전략을 함께 점검해야 한다.

함께 사용하는 기술

관련 문서

출처

  • Supabase 공식 홈페이지
  • Supabase 공식 문서
  • Supabase Getting Started 문서