Supabase로 프로젝트 살리기

김상민·2024년 5월 16일
0

Supabase

목록 보기
1/1
post-thumbnail

항상 팀 프로젝트를 하고 나서 디벨롭을 하려하면 "서버비용 때문에 서비스를 중지합니다" 라는 말을 듣게 된다.
이런 프로젝트를 살리기 위해 Supabase를 사용해보았다.

선택 이유

Supabase의 문서를 들어가자 마자 Firebase의 대안인 오픈소스라는 소개가 있다.
이처럼 Firebase라는 선택지도 있었지만 Supabase를 사용한 이유는 Postgres 기반의 관계형 DB를 사용할 수 있다는 점이었다.

기존 프로젝트를 살려서 디벨롭하는게 목적이기 때문에 이전의 API 자원을 그대로 사용하기를 원했는데, Supabase의 관계형 DB 덕분에 ERD를 참고해서 빠르게 DB를 구축할 수 있었다.

그리고 추가로 Edge Functions, Storage, Auth 같은 기능을 제공하는 것도 Supabase의 장점인데 Auth는 일단 사용하지 않을 것이기 때문에 이것 빼고 설명해보겠다.

프로젝트 만들기

프로젝트를 만드는 것이 Supabase의 시작인데 아주 간단하다.
아래와 같이 이름과 Organization을 지정하고 새 프로젝트를 생성하면 된다.

📚 Database

Database를 만드는 것도 아주 직관적인데, Table Editor로 가서 new Table만 누르면 아래와 같이 명령어 하나 없이 테이블을 만들 수 있다.

또는 SQL Editor에서 SQL문으로 여러 작업들을 할 수 있는데 이것도 정말 편한게 AI Assistant가 있어서 SQL문을 잘 몰라도 사용할 수 있다.

RLS

RLS는 깊게 알지는 못하지만 DB에 접근할 수 있는 사용자를 지정하는 역할을 한다고 알고 있다.
나중에 Edge functions로 API를 만들다가 알게되었는데 아무리 요청을 해도 data가 빈값으로 오길래 찾아보니 RLS를 지정하지 않아서였다.

RLS는 테이블에서 policy를 선택하면 나오는데 이것도 아래와 같이 템플릿을 제공하기 때문에 아주 편하게 사용할 수 있다.

🔨 Edge Functions

사용하면서 정말 좋다고 생각한 것이 Edge Functions인데 DB만 있다면 이를 호출할 때 SQL문 비슷하게 접근해서 필요한 데이터를 요청하거나 삽입해야한다.

Edge Functions은 서버리스 함수 기능 중 하나로, 전 세계의 엣지 네트워크에 분산되어 사용자에게 빠른 서비스를 제공한다.
이를 활용하여 기존과 동일하게 API 통신을 할 수 있는 백엔드 서비스를 구축할 수 있다.

Edge FunctionsDeno 환경에서 개발할 수 있는데 개발 환경을 세팅하고 사용하는 건 Supabase Youtube공식문서를 보면 너무 잘 알려주기 때문에 사용법은 생략하겠다.

Deno를 통해 함수를 작성하고 배포하고 요청을 보내봤다.

📦 Storage

Storage는 사진 같은 파일을 저장할 수 있는 저장소이고 이미지 url을 생성해주기 때문에 이것도 정말 쉽게 이용해서 API를 만들 수 있었다.

🧐 회고

예전에 프로젝트에 사용을 고려했던 적이 있었는데 DB에 대한 이해도가 부족해서 설계부터 막히다보니 그만뒀었다.
하지만 DB나 API 함수에 대한 이해도가 생기고 나니 정말 쉽게 백엔드를 구축할 수 있게 해주는 서비스라는 걸 느낄 수 있었다.
supabase로 지하철 SNS 서비스의 백엔드를 아주 간단한 것부터 살려보았다.
그리고 공식문서가 너무 잘 되어 있어서 끝난 프로젝트를 살리는데에 쓰기 정말 좋은 것 같다.

참고

supabase 공식문서
생활코딩 유튜브

profile
성장하는 웹 프론트엔드 개발자 입니다.

0개의 댓글