인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

유재석님의 프로필 이미지

작성한 질문수

Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)

9.1 Share 페이지 만들기

Supabase CRUD 하기 또는 REST API화 하기 중 질문이 있습니다.

해결된 질문

작성

·

100

1

안녕하세요! 좋은 강의 잘 들었습니다!

강의 중 내용에 관한 질문이 있어 여쭙니다.

현업에서 작은 사이드 프로젝트를 운영중인데 기존에는 Firebase를 사용하다가 SQL DB가 필요해 Supabase로 이전을 고려하다 강의를 듣게 되었습니다.

다름이 아니라 Supabase에서도 REST API 형태를 지원하는 것으로 알고 있는데

강의 내용을 보면, REST API 형태를 사용하는 것이 아닌,

직접 Supabase의 Database에 CRUD 하는 것으로 여겨집니다.

보안이나 코드의 유지 / 보수, 또는 프론트 개발자와 백엔드 개발자의 역할 분리 등 여러 측면을 고려하였을 때 REST API 형태가 아닌 프론트 코드 내에 직접 CRUD 코드가 구현된 이유가 무엇인지 궁금합니다.

답변 2

2

도도(코딩루팡)님의 프로필 이미지
도도(코딩루팡)
지식공유자

내부적으로 supabase JS sdk를 사용하면 Postgre의 REST API를 쓰는게 맞습니다.

일종의 Wrapper 라이브러리에요.

아시다 싶이 .. 클라이언트 사이드에서 직접 DB와 커넥션 하는것은 보안상, 그리고 커넥션 풀의 문제로 절대로 피해야 하는 방식입니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 유재석님, 좋은 질문 감사합니다!

Supabase와 같은 BaaS(Backend as a Service) 플랫폼은 사용자에게 SQL 기반의 데이터베이스와 함께 편리한 API 인터페이스를 제공합니다. Supabase는 SQL 쿼리를 직접 브라우저에서 호출할 수 있도록 함으로써 빠른 개발을 가능하게 하지만, 그럼에도 여러 이유에서 REST API 기반의 구조가 권장될 수 있습니다.

  1. 보안: 브라우저에서 직접 데이터베이스에 접근하면 클라이언트 측 코드에 민감한 정보(예: API 키)가 노출될 수 있습니다. REST API 서버를 통해 접근하면 이러한 정보가 보호됩니다.

  2. 역할 분리: 프론트엔드와 백엔드의 역할이 명확히 분리됩니다. 이렇게 하면 각 팀이 기술 스택이나 개발 사이클을 보다 독립적으로 관리할 수 있습니다.

  3. 유지보수성과 확장성: REST API는 하나의 계약(Contract)으로 다양한 클라이언트(웹, 모바일)에서 동일하게 사용할 수 있어 유지보수성이 높습니다. 또한, API의 변경은 클라이언트 코드의 최소한의 수정으로 통합될 수 있습니다.

Supabase 강의에서는 대부분의 학습자에게 즉각적인 개발 경험을 제공하기 위해 데이터베이스 직접 호출 방식을 사용하지만, 실무에서는 보통 백엔드에서 REST API를 구축하여 관리하는 것이 더 많은 이점이 있습니다.

관련하여 추천드릴 수 있는 기존 게시물을 소개드립니다:

  • DBeaver는 왜쓰는 건가요?
    이 질문은 DBeaver를 이용해 DB 자체를 관리하는 측면을 설명하고 있어, 직접 데이터베이스 접근의 이점과 REST API 사용과의 차이가 드러나 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.