Firebase 프로젝트 만들기 + Firestore 생성 정리

hyo·2025년 9월 21일

목표: Firebase 프로젝트가 뭔지와 그 안에서 Firestore를 어떻게 만드는지 정리


0. Firebase / Firestore 개념 한 줄 정리

  • Firebase 프로젝트: 인증, 데이터베이스, 스토리지 등 여러 제품을 묶는 컨테이너(=GCP 프로젝트)
  • Cloud Firestore: 문서·컬렉션 기반 NoSQL DB (Firebase 제품 중 하나)
    → 즉, 프로젝트 안에 Firestore(데이터베이스) 를 활성화해서 쓰는 구조

1. 준비

  • Google 계정 (콘솔 접근용)
  • 콘솔 주소: https://console.firebase.google.com/
  • (팀 개발이면) 프로젝트 소유자 1명 + 에디터 권한 팀원들


2. Firebase 프로젝트 생성

1) 프로젝트 만들기 클릭
2) 프로젝트 이름 입력 (용도별 권장)
3) Google Analytics 켤지 선택 (처음엔 꺼도 됨 → 나중에 켜기 가능)
4) 생성 완료


3. Firestore 생성 (프로젝트 내부)

1) 좌측 메뉴 Build → Firestore Database
2) 에디션 선택: 보통 Standard (일반적인 모바일/웹 앱에 적합)
3) 데이터베이스 ID: (default) 권장
4) 위치(리전): 사용자/백엔드와 가까운 단일 리전 선택 (예: asia-northeast3 (Seoul))
5) 시작 모드(보안 규칙): 프로덕션 모드 권장 (기본 차단)

왜?

  • (default)는 가장 일반적이고, 다DB가 필요한 특수 케이스 아니면 충분
  • 리전은 나중에 바꾸기 어렵다 → 초기에 서울 등 가까운 곳으로
  • 테스트 모드는 30일 열림이라 실수로 공개될 위험 → 프로덕션 모드가 안전

4. 최소 보안 규칙

콘솔 → Firestore → 규칙(Rules) 탭 → 붙여넣기 → 게시(Publish)

A. 로그인 사용자만 접근 (가장 무난)

// rules_version = '2';
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}

B. 사용자 본인 문서만 허용 (예: /users/{uid})

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
// 다른 컬렉션 규칙은 필요에 따라 추가
}
}

C. 완전 차단(잠그기)

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}

5. (선택) 로컬 개발: Emulator

1) npm i -g firebase-tools (최초 1회)
2) 프로젝트 루트에서 firebase init emulators → Firestore 체크
3) firebase emulators:start 실행
4) 앱에서 에뮬레이터 호스트/포트(기본 localhost:8080)로 연결

왜 사용하는지

  • 진짜 DB를 건드리지 않고 로컬에서 테스트
  • 네트워크 비용/한도/보안 규칙 걱정 없이 개발 루프 빠름

6. 비용/요금제 관련

  • Spark(무료) 플랜에서 Firestore는 일일 무료 할당(읽기/쓰기/저장)이 있어 개발·테스트에 충분
  • 과금은 직접 Blaze(유료)로 업그레이드 + 결제수단 등록해야만 발생
  • 파일 업로드(Storage)나 Functions 등 일부 제품은 Blaze 필요 (업그레이드 전엔 아예 못 씀)

7. 팀 권한 & 운영 관련

  • 프로젝트 오너 최소화: 요금제/리소스 변경은 오너만
  • 에디터: 데이터/규칙 수정 담당
  • Environment 분리: -dev, -prod 두 프로젝트로 나누면 실수 방지
  • 리마인더: 테스트 규칙/임시 오픈 시 마감일 캘린더 등록

8. 빠른 동작 확인

1) 콘솔 → Firestore → 컬렉션 시작test 만들고 문서 추가
2) 규칙 플레이그라운드로 읽기/쓰기 요청 테스트
3) (에뮬레이터 사용 시) 대시보드에서 문서 생성/로그 확인


내 질문 및 답변

  • 프로덕션/테스트 모드 차이?
    시작 규칙 템플릿만 다름. 실제 동작은 현재 게시된 규칙이 전부.
  • 리전 바꿀 수 있나?
    사실상 힘듦(데이터 내보내기→새 DB로 마이그레이션 수준). 처음에 신중히.
  • API 키 노출?
    클라이언트 키는 비밀이 아님. 보안은 전적으로 Rules로 거는 것.

0개의 댓글