Backend 오픈소스 Supabase
포스트
취소

Backend 오픈소스 Supabase

Firebase 대체제로 유명한 백엔드 오픈소스 Supabase 에 대해 알아보자. 웹앱, 모바일앱 개발시 많이 사용된다.

1. Supabase 란?

모든 백엔드 기능을 제공하는 Firebase 의 대체 오픈소스

Supabase Architecture Supabase Architecture

1) 기능

  • 호스팅 된 Postgres 데이터베이스 Docs
  • 사용자 인증 및 권한 부여 Docs
  • 자동생성 API
  • 함수
    • 데이터베이스 함수. Docs
    • 엣지 함수 Docs
  • 파일 스토리지 Docs
  • 대시보드

클라이언트 라이브러리

  • JS/Typescript
  • C#, Go, Java, Kotlin, Rust, Ruby
  • Flutter, Swift

2) 요금

클라우드 서비스를 이용할 수 있다.

무료 : 프로젝트 2개까지

  • DB 500MB 를 포함해 저장소 1GB
  • 네트워크 트래픽 2GB, 파일 업로드 50MB 까지
  • 소셜 OAuth 제공, 월 5만명 사용자 접속 가능
  • 엣지 함수 호출 500K 회
  • 1일 로그 유지

프로 : 프로젝트당 월 25달러 (3만1천원)

  • 무료 버전에서 용량 업그레이드 (충분)
  • 일일 백업, 7일 로그 유지
  • 프로젝트 중지 없음

3) 셀프 호스팅 (도커)

Docker 실행 후 http://localhost:3000 접속하면 스튜디오가 실행된다.

1
2
3
4
5
6
7
8
9
10
11
12
# Get the code
git clone --depth 1 https://github.com/supabase/supabase

# Go to the docker folder
cd supabase/docker

# Copy the fake env vars
cp .env.example .env

# Start
docker compose up --build --force-recreate --remove-orphans
# docker compose down -v

.env, kong.yml 설정

  • .env 에 API 키와 암호, 포트번호 등의 설정사항을 입력
  • API KeysJWT Secret, ANON_KEY, SERVICE_KEY 를 생성한다.
    • docker/.env 에 JWT, ANON, SERVICE 를 설정하고
    • docker/volumes/api/kong.yml 에 ANON, SERVICE 를 설정

동일한 JWT Secret 값에 대해 Generate JWT 버튼을 눌러 생성하면 된다.

nginx 로 rest, auth, realtime, studio 연결하기

참고 How to Self-host Supabase: A complete guide - 2022년12월

2. 구성요소

docker-compose.yml 내용을 참고

1) studio : 프로젝트 관리를 위한 웹애플리케이션

Supabase Studio Supabase Studio

  • Next.js, Tailwind, Supabase UI 등으로 만들어졌다. 참고

2) kong : 클라우드 네이티브 API 게이트웨이

  • kong.yml 에서 서비스 항목 정의 및 경로 연결

3) auth : 인증 API 및 사용자 관리

4) rest : postgrest 이용

  • PostgreSQL 과 직접 연결되는 RESTful API 웹서비스

5) realtime : websocket 기반 실시간 알림

  • 참고 Realtime Quickstart
  • 웹 소켓을 사용하여 PostgreSQL 삽입, 업데이트 및 삭제를 수신 할 수 있는 Elixir 서버

6) storage : S3, Wasabi, Backblaze 저장소 연결

supabase storage supabase storage architecture

7) imgproxy : 이미지 리사이즈, 썸네일 서비스

8) postgres-meta : PG 의 테이블, 계정, 함수, 쿼리 실행 API

9) postgres : supabase 의 Database

  • PG 14 이상에 여러 extentions 들을 필요로 한다.
    • docker 의 Extensions 리스트를 참고

3. Sveltekit 관련 Supabase 예제

1) Auth 예제 : signIn, signOut

2) Supabase 설정 (OUTDATED)

3) 유튜브 - 블로그 만들기

9. Review

  • 웹애플리케이션보다 Flutter 같은 모바일 개발자들에게 인기가 높은듯
  • 여러차례 노력했지만, 셀프 호스팅 시도에 실패했다. (클라우드 쓰기 싫어서)
    • pg 를 필요로 하는 부가 서비스들이 로그인 시도에 실패한다.
    • pg 자체 로그인이 가능하도록 계정 sql 을 수정했지만, 계속 실패.
    • 통합된 도커 구성에 문제가 있다고 판단해서, appwrite 로 전환하기로 함

 
 

끝!   읽어주셔서 감사합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.