이 장의 내용 · 6
화면만 있는 사이트는 새로고침하면 입력한 내용이 모두 사라집니다. 신청서를 받거나 후기를 모으려면 데이터를 어딘가에 저장해야 하는데, 그곳이 데이터베이스(DB)입니다.
예전에는 DB를 쓰려면 서버를 빌리고, DB를 설치하고, 데이터를 주고받는 코드를 직접 짜야 했습니다. Supabase는 이 과정을 웹사이트에서 클릭 몇 번으로 끝내 줍니다.
14.1Supabase가 해 주는 일
- 데이터베이스: Postgres라는 오래 검증된 DB를 바로 쓸 수 있습니다.
- 로그인(Auth): 이메일 가입, 소셜 로그인 같은 회원 기능.
- 파일 저장(Storage): 사진이나 문서 업로드.
- 자동 API: 표를 만들면 그 표를 읽고 쓰는 창구(API15장)가 자동으로 생깁니다.
14.2표 하나가 데이터 한 묶음
후기를 저장하는 표라면 이렇게 생겼습니다.
표 이름: reviews
칸: author(작성자), rating(별점), body(내용)
줄: 김바이브 · 5 · "생각보다 쉬웠어요"
줄: 이코딩 · 4.5 · "질문에 바로 답해 주셨어요"Supabase 대시보드의 Table Editor에서는 엑셀처럼 직접 보고 고칠 수도 있습니다.
14.3열쇠는 두 개입니다
Supabase에 접속하려면 열쇠(키)가 필요한데, 종류가 둘입니다.
- 공개 키(publishable key): 브라우저 코드에 들어가도 되는 키입니다. 대신 아래에서 설명할 규칙(RLS) 안에서만 움직입니다.
- 비밀 키(secret key): 모든 규칙을 통과하는 만능 키입니다. 서버에서만 쓰고, 절대 화면 코드에 넣으면 안 됩니다.
예전 프로젝트에서는 각각 anon 키, service_role 키라는 이름으로 보일 수도 있습니다. 역할은 같습니다.
14.4RLS, 줄마다 붙는 출입 규칙
RLS(Row Level Security)는 "누가 어떤 줄을 볼 수 있는지" 정하는 규칙입니다. 이 홈페이지의 후기 표에는 이런 규칙이 걸려 있습니다.
create policy "visible reviews are public"
on reviews for select
using (visible);"숨김 처리하지 않은 후기만 누구나 읽을 수 있다"는 뜻입니다. 공개 키로는 이 규칙을 넘을 수 없어서, 숨긴 후기는 아무리 요청해도 보이지 않습니다. 후기를 쓰고 고치는 일은 관리자 화면에서 서버가 비밀 키로 처리합니다.
14.5자주 하는 실수 세 가지
- RLS를 끈 채로 운영: 공개 키만 있으면 누구나 표 전체를 읽고 고칠 수 있는 상태가 될 수 있습니다. 표를 만들면 RLS부터 켜세요.
- 비밀 키를 브라우저에: 화면 코드에 들어간 키는 누구나 볼 수 있습니다. 비밀 키는 서버에만 둡니다.
- RLS만 켜고 규칙은 없음: 에러 없이 빈 결과만 돌아옵니다. "데이터가 안 보여요"의 흔한 원인이니, 정책(policy)부터 확인하세요.
14.6AI에게 이렇게 말해 보세요
- “후기를 저장할 표 만들어 줘. 작성자, 별점, 내용 칸이 필요해”
- “이 표에 RLS 켜고, 누구나 읽기만 할 수 있게 정책 만들어 줘”
- “비밀 키가 브라우저 코드에 들어간 곳이 없는지 확인해 줘”
Supabase MCP8장를 연결해 두면(8장 참고) AI가 표를 직접 만들고 확인까지 해 줍니다.
15장에서는 Supabase처럼 서비스끼리 데이터를 주고받는 창구, API를 알아보겠습니다.
— 14장 끝 —





