로펀님의 Supabase 강의를 듣고 작성한 글입니다.

서두
최근 사이드 프로젝트를 진행하기 위해 여러가지 기술들을 서치했다. 사이드 프로젝트는 한정된 자원 속에 서비스를 구현해야하기 때문에 시간을 줄여줄 기술들에 관심을 가지게 되었고 그 중 Supabase를 관심있게 보게 되었다.
Firebase
Supabase 글에 갑자기 Firebase 얘기가 나와 이상할 수 있지만 Supabase는 Firebase의 대체제로 자신의 존재를 알려왔다. Supabase의 홈페이지에는 아예 오픈소스 Firebase 대체제라고 소개하고 있고 Supabase CTO가 작성한 Supabase vs Firebase 라는 비교글도 존재한다.

두 서비스 모두 BaaS(Backend as a Service)로 서버 없이도 빠르게 앱을 출시 할 수 있도록 나온 백엔드 플랫폼 서비스이다. 개발자는 웹 혹은 모바일 앱 개발에 집중하고 백그라운드 측면은 BaaS 서비스를 사용함으로써 개발 시간을 단축할 수 있다.
Firebase는 Firestore database라는 Document NoSQL을 기반으로 유저 인증, Cloud Function, Cloud Storage 등의 다양한 기능들을 제공한다.
Firebase의 장점
- 구글의 다양한 서비스와 폭넓은 연동을 지원
- 적용이 매우 쉽고 문서화가 잘 됨
- 2011년부터 서비스되어 커뮤니티가 매우 성숙함
- 앱, 웹에서 단순하게 사용할 수 있는 NoSQL 기반
Firebase의 단점
- 오픈소스가 아니기 때문에 Vendor Lock-in 이슈가 있음
- NoSQL이기 때문에 검색 조건이 많아지면 쿼리가 복잡해지고 어려워짐
- Firebase는 읽기, 쓰기, 삭제에 대해 비용을 부과하기 때문에 예상치 못하게 비용이 증가할 수 있음
Supabase
Supabase는 오픈소스로서 PostgreSQL이라는 RDBMS를 기반으로 하는 서비스이다. Supabase는 PostgreSQL을 기반으로 4가지 핵심 기능들을 제공한다.
- Database : Supabase는 Postgres DB를 모두 활용한 실시간 기능, DB 백업, 익스텐션 등을 제공
- Auth : email/password 인증부터 OAuth, 모바일 로그인까지 다양한 인증 기능과 API를 제공
- Storage : 이미지, 동영상 등의 파일들을 쉽게 업로드하고 관리할 수 있는 기능을 제공
- Realtime : 실시간으로 클라이언트들 간 메세지를 주고 받을 수 있고 유저 상태를 공유할 수 있음
Supabase 장점
- 오픈소스 프로젝트이기 때문에 Vendor Lock-in 이슈에 자유롭고 자체 서버 구축이 가능함
- PostgreSQL 기반으로 관계형 DB의 장점을 잘 살릴 수 있음
- 저장된 데이터의 양에 따라 비용을 부과하기 때문에 Firebase 대비 저렴함
- REST API, GraphQL, SDK 등 다양한 연동방식을 지원
Supabase 단점
- 아직 커뮤니티가 Firebase만큼 성숙하지 않음. 기능이 미흡한 부분에 대해서는 직접 PR을 올리거나 이슈 제기를 해야 할 수 있음
- Firebase 대비 제공 기능이 비교적 적음
- 아직까지는 문서화가 Firebase 대비 미흡함. 한글화는 당연히 안되어 있고 공식 사이트의 가이드 문서를 보더라도 아쉬움이 느껴짐
왜 Supabase를 사용해야 할까?
Firebase와 Supabase를 비교해봤는데 지금까지 Supabase를 사용해본 결과 아래와 같은 상황에 Supabase 사용하는 것을 고려할 수 있다.
- Supabase에는 개인이나 소규모 팀이 풀스택으로 개발하는데 필요한 대부분의 기능들이 준비되어 있다.
- Supabase는 오픈소스이기 때문에 보안상의 이슈로 직접 서버 구축이 필요할 때나 Vendor Lock-in 이슈로 Firebase에서 마이그레이션이 필요할 때 사용할 수 있다.
- Supabase는 PostgreSQL 기반의 서비스이기 때문에 SQL로 복잡한 쿼리나 조인을 작성해서 서비스 로직을 정교하게 만들 수 있다.
- Supabase는 강력한 보안 기능을 제공한다. Row Level Security를 제공해 테이블의 데이터를 Row 단위로 세밀하게 관리할 수 있고 Auth를 통해 사용자 데이터를 안전하게 보호하는 인증 시스템을 제공한다.
참조