최종 수정 : 2024-06-04 (계속 작성 및 수정 중)
공부하기로 정한 이유
프로젝트를 하면서 Swagger로 API를 연동하는데, 개인적으로 어려움을 겪었다. 우선적으로 API 연동하는 방법을 모른 탓도 있고, 기존에 주어진 데이터가 없는 상황에서 POST를 보낸 후에 GET하는 방식이라 귀찮았다. 솔직히 귀찮았다는 표현이 맞는 것 같다.
그러면서 개인적으로는 Supabase나 GraphQL에 대해 공부하고 싶은 열망이 있었는데, 이번 프로젝트를 겪으면서 그냥 하나 만드는 게 더 나을 것 같은데? 라는 생각이 들었다. 그래서 공부를 시작하고 있다. 어렴풋이 듣기만 했던 것을 직접 만져보고 싶었다. "하면 좋지"에서 "직접 만들고 싶다"라는 단계로 마음과 생각이 옮겨졌다.
함께 공부에 대한 열의가 있는 동료를 알게 되어, 더 마음이 촉발되고 불이 붙은 것 같다.
Supabase
구글 Firebase를 엔터프라이즈 레벨에서도 사용 가능하도록 만든 오픈소스 프로젝트이다. Firebase의 오픈소스 대체제라고 말할 수 있다. Firebase 처럼 클라우드로 제공되는 서비스이며, 모바일 및 웹 애플리케이션에서 사용할 수 있는 백엔드 서비스이다. 또한, PostgreSQL 데이터베이스 기반으로 하는 오픈 소스 백엔드 서비스다. 백엔드 없이도 쉽고 빠르게 데이터 베이스를 구축할 수 있다. 이뿐 아니라 REST API, 이벤트 처리 등의 고유한 기능을 오픈소스로 제공한다.
데이터베이스, 클라우드, 호스팅, 스토리지, 인증, 실시간 데이터 기능을 제공한다. 하지만 호스팅 서비스는 제공하지 않기 때문에 다른 서비스를 이용해야 한다.
# Firebase의 대안
NoSQL의 Firebase의 대안이라고 표방하며 등장했다. 어떤 차이가 있는지 살펴보자. 우선 Firebase를 이용하면 간단한 CRUD는 물론, 클라우드, 호스팅, 스토리지, 사용자 인증, 실시간 데이터 동기화 기능을 사용할 수 있다. 하지만 무료 데이터의 제한이 있고 대규모 서비스를 운영할 경우에는 서비스 비용이 커질 수 있다는 단점이 존재한다.
기능 | Supabase | Firebase |
데이터베이스 | O | O |
관계형 데이터 | O | - |
클라우드 | O | O |
스토리지 | O | O |
호스팅 | - | O |
쿼리 | O | O |
인증 | O | O |
실시간 데이터 | O | O |
Firebase는 웹소켓과 SSE(Server-Sent-Event)가 대중화 되기 전까지는 혁신적인 RTSP(Real-Time-Stream-Protocol) 방식의 실시간 DB를 제공했다.
서버가 해외에 위치하여 서버의 응답 처리 속도가 느려질 떄가 있으며 NoSQL 기반의 DB이므로 쿼리가 빈약해 데이터 검색이 어렵다. 또한 로컬에서의 완벽한 실행이 불가능하며 인덱스 생성이 더디다. 무엇보다, 오픈소스가 아니기에 지속적일 것이라는 보장이 없으며, CLI가 폐쇄적이다.
# Supabase가 없다면?
- 사용자 인증 OAuth, Email 구현
- 관계형 DB 구축하기
- ORM, Repository, Service, Router 등 Layer 구상
- 서비스 배포 및 운영
- BE 개발자와 협업 및 커뮤니케이션 비용 발생
이처럼 Supabase를 사용하면, 당장 비즈니스에 집중하여 개발에 돌입할 수 있다.
Supabase 특징
또한, Firebase에서는 제공하지 못하는 RDB(Relational-DataBase)를 제공한다. 엑셀 시트처럼 빈 칸에 내용을 채워가는 DB 방식이다. SQL 쿼리를 웹페이지에서 작성, 저장, 실행을 SQL Editor을 통해 스키마를 쉽게 생성할 수 있다.
# PostgresSQL
관계형 데이터베이스 형태를 띠고 있으며, 표로 데이터를 저장하고 서로 다른 표들 간의 연결 및 관리가 가능하다. 그러나 단순한 관계형 데이터베이스가 아니라 전체 데이터베이스 영역을 아우를 수 있는 데이터 관리 프레임워크다.
ACID 특성을 갖추어 데이터 일관성과 안정성을 보장한다.
# 리얼타임 데이터베이스
실시간으로 데이터를 동기화할 수 있는 기능을 제공하여 다중 사용자가 동시에 데이터를 업데이트할 수 있다. 또한 실시간 업데이트를 통해 실시간 협업 및 애플리케이션에서의 실시간 이벤트 처리가 가능하다.
# REST API 및 WebSocket 지원
REST API를 제공하여 다양한 플랫폼 및 언어로 손쉽게 상호 작용할 수 있다.
WebSocket을 통해 실시간 업데이트 및 알림을 구현할 수 있다.
# 인증 및 권한 관리
사용자 관리, 로그인, 권한 관리 같은 기능을 내장하고 있어 개발자가 인증 및 권한 관리를 쉽게 구현할 수 있다.
# 클라우드 호스팅 및 자동 스케이일링
클라우드에서 호스팅되며, 데이터베이스 및 인프라 관리에 대한 부담을 줄여준다.
자동 스케일링 기능을 통해 트래픽 증가에 따라 자동으로 리소스를 확장할 수 있다.
# RLS(Row Level Security)
NoSQL?
SQL ?
관계형 데이터 구조
NoSQL과 SQL의 차이점은?
MySQL과 PostgreSQL의 차이점은?
MySQL
- 읽기 전용 명령을 관리하는 데 선호된다. 동시성이 필요한 경우에는 선호되지 않는다.
- 읽기 전용 쿼리에서 더 가볍고 안정적이며 빠른 처리 속도를 유지할 수 있다.
- 다양한 유형의 데이터 스토리지 엔진과 호환성이 높다.
PostgreSQL
- 객체-관계형 데이터베이스 시스템(ORDMBS)이다.
- 읽기-쓰기 작업, 데규모 데이터 세트 및 복잡한 쿼리를 관리하는 경우에 선호된다. 그러나 읽기 전용 작업에는 선호되지 않는다.
- 처음부터 ACID를 준수하도록 구축되었으며, 동시 트랙잭션(MVCC)이 필요한 경우에는 최적이다. 그러나 읽기 전용 작업의 경우에는 속도가 느리고 안정성이 떨어진다.
- 다양한 NoSQL 형식과 호환성이 높다.
https://www.integrate.io/ko/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case-ko/
https://www.youtube.com/watch?v=-PbP1TcD94Q&pp=ygUX7IOd7Zmc7L2U65SpIHBvc3RncmVzcWw%3D
참고 자료
https://www.youtube.com/watch?v=FbLzqoENTsg&pp=ygUV7IOd7Zmc7L2U65SpIHN1cGFiYXNl
https://www.youtube.com/watch?v=yZ89etxVBKs&pp=ygUV7IOd7Zmc7L2U65SpIHN1cGFiYXNl
https://www.youtube.com/watch?v=dKuLA5BGPTY&pp=ygUX7IOd7Zmc7L2U65SpIHBvc3RncmVzcWw%3D
Supabase 구축 및 사용법
'프론트엔드 > Supabase + Jotai' 카테고리의 다른 글
Supabase - Edge Functions (0) | 2024.05.29 |
---|---|
Supabase - Storage (0) | 2024.05.28 |
Supabase - Auth / Auth architecture /Auth with React (0) | 2024.05.25 |
Supabase (0) | 2023.07.12 |
Jotai (0) | 2023.07.11 |
댓글