Supabase 기초

Supabase는 오픈소스 기반의 백엔드 서비스 플랫폼입니다. "Firebase의 오픈소스 대안"을 표방하며, 실시간 데이터베이스, 인증, 파일 스토리지 등 다양한 백엔드 기능을 제공합니다.

개요

Supabase는 개발자가 서버 개발 없이도 웹 및 모바일 애플리케이션을 빠르게 만들 수 있도록 돕습니다. 특히 관계형 데이터베이스인 PostgreSQL을 기반으로 하여 기존 SQL 데이터베이스에 익숙한 개발자에게 유리하며, SQL을 사용하여 데이터를 조작할 수 있습니다. 자체적으로 API를 자동으로 생성해 주는 기능이 있어 프론트엔드 개발에 집중할 수 있습니다.

참고

Supabase는 데이터베이스, 인증, 스토리지, 엣지 함수(Edge Functions) 등 다양한 백엔드 기능을 통합적으로 제공하는 BaaS(Backend-as-a-Service) 플랫폼입니다.

주요 기능

Supabase가 제공하는 핵심 기능들은 다음과 같습니다:

  • 실시간 데이터베이스: PostgreSQL 데이터베이스를 기반으로 하며, 데이터 변경 사항을 실시간으로 구독할 수 있습니다.
  • 인증(Authentication): 이메일, 소셜 로그인 등 다양한 인증 방식을 쉽게 구현할 수 있습니다.
  • 스토리지(Storage): 파일, 이미지, 동영상 등 대용량 파일을 저장하고 관리할 수 있습니다.
  • 엣지 함수(Edge Functions): Deno 기반의 서버리스 함수로, 서버 로직을 빠르게 실행할 수 있습니다.
  • 자동 생성 API: 데이터베이스 스키마를 기반으로 RESTful API와 GraphQL API를 자동으로 생성합니다.

핵심 개념

Supabase는 PostgreSQL의 테이블과 컬럼 개념을 그대로 사용합니다. 데이터베이스에 대한 접근 권한은 RLS(Row Level Security)를 통해 세밀하게 제어할 수 있습니다.

  • 프로젝트: Supabase에서 생성하는 가장 큰 단위로, 하나의 애플리케이션을 의미합니다.
  • 테이블: PostgreSQL의 테이블과 동일한 개념으로, 데이터를 저장하는 기본 구조입니다.
  • RLS(Row Level Security): 특정 조건을 만족하는 사용자만 데이터에 접근하거나 수정할 수 있도록 하는 보안 기능입니다.
  • API 키: Supabase 프로젝트에 접근하기 위한 키로, 공개키와 비밀키가 있습니다.

사용 예제

Supabase 클라이언트 라이브러리(JavaScript 기준)를 사용하여 데이터를 조회하는 예제입니다.

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

const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseKey = 'YOUR_SUPABASE_ANON_KEY';
const supabase = createClient(supabaseUrl, supabaseKey);

async function getUsers() {
  const { data, error } = await supabase
    .from('users')
    .select('*');

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

getUsers();

주의사항 및 팁

  • Supabase는 백엔드를 대신해 주므로, 프론트엔드 프레임워크(React, Vue 등)와 함께 사용하면 더욱 강력한 시너지를 낼 수 있습니다.
  • 데이터베이스 스키마는 Supabase의 GUI 대시보드를 통해 쉽게 생성하고 관리할 수 있습니다.
  • RLS(Row Level Security)는 Supabase의 핵심 보안 기능이므로, 반드시 활성화하고 적절한 정책을 설정해야 합니다.
주의

Supabase는 PostgreSQL을 기반으로 하지만, 모든 PostgreSQL 기능을 완벽하게 지원하는 것은 아닙니다. Supabase에서 제공하는 기능과 제약 사항을 사전에 확인하는 것이 좋습니다.