Firebase 대체제로 유명한 백엔드 오픈소스 Supabase 에 대해 알아보자. 웹앱, 모바일앱 개발시 많이 사용된다.
1. Supabase 란?
모든 백엔드 기능을 제공하는 Firebase 의 대체 오픈소스
Supabase Architecture
1) 기능
클라이언트 라이브러리
- 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 Keys 로
JWT 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
- Next.js, Tailwind, Supabase UI 등으로 만들어졌다. 참고
2) kong : 클라우드 네이티브 API 게이트웨이
- kong.yml 에서 서비스 항목 정의 및 경로 연결
3) auth : 인증 API 및 사용자 관리
- 참고 깃허브 - supabase/gotrue
- 사용자 관리 및 SWT 토큰 발급을위한 SWT 기반 API
4) rest : postgrest 이용
- PostgreSQL 과 직접 연결되는 RESTful API 웹서비스
5) realtime : websocket 기반 실시간 알림
- 참고 Realtime Quickstart
- 웹 소켓을 사용하여 PostgreSQL 삽입, 업데이트 및 삭제를 수신 할 수 있는 Elixir 서버
6) storage : S3, Wasabi, Backblaze 저장소 연결
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
- 유튜브 - SvelteKit and Supabase Tutorial with Authentication
- 유투브 - How to Use Supabase Auth With Sveltekit!
- 블로그 - SvelteKit with Supabase SSR Auth Helpers
2) Supabase 설정 (OUTDATED)
3) 유튜브 - 블로그 만들기
9. Review
- 웹애플리케이션보다 Flutter 같은 모바일 개발자들에게 인기가 높은듯
- 여러차례 노력했지만, 셀프 호스팅 시도에 실패했다. (클라우드 쓰기 싫어서)
- pg 를 필요로 하는 부가 서비스들이 로그인 시도에 실패한다.
- pg 자체 로그인이 가능하도록 계정 sql 을 수정했지만, 계속 실패.
- 통합된 도커 구성에 문제가 있다고 판단해서, appwrite 로 전환하기로 함
끝! 읽어주셔서 감사합니다.