나루 블로그 레퍼런스 (hamkki, hihihirobot) 분석 중 Firebase 사용을 확인하고 정리한 문서다.

Firebase가 뭔가

한 줄로 말하면 "서버를 직접 만들지 않아도 백엔드 기능을 쓸 수 있게 해주는 Google의 클라우드 서비스"다.

이런 서비스를 BaaS (Backend as a Service)라고 부른다. Spring Boot로 서버를 만들고, DB 설치하고, 인증 로직 짜고, 서버에 배포하는 과정을 Firebase가 대신 해주는 셈이다.

비유하자면 이렇다.

  • 직접 서버를 만드는 것 = 식당을 열어서 직접 요리하는 것
  • Firebase를 쓰는 것 = 공유 주방에서 이미 갖춰진 도구와 재료로 요리하는 것

주방(서버 인프라)을 내가 관리할 필요 없이, 필요한 기능만 골라서 쓰면 된다.

주요 서비스

Firebase는 하나의 제품이 아니라 여러 서비스의 묶음이다. 전부 쓸 필요 없고, 필요한 것만 골라 쓰면 된다.

데이터베이스

Cloud Firestore

가장 많이 쓰는 Firebase DB. NoSQL 문서형 데이터베이스다.

// 컬렉션과 문서 구조 (JSON과 비슷)
users (컬렉션)
  ├── user1 (문서) → { name: "홍길동", age: 25 }
  └── user2 (문서) → { name: "김철수", age: 30 }
  • RDB의 테이블/행 대신 컬렉션/문서 개념을 쓴다
  • SQL 없이 JS 코드로 직접 읽고 쓴다
  • 실시간 동기화 지원 — 데이터가 바뀌면 연결된 모든 클라이언트에 즉시 반영

Spring Boot에서 MySQL 쓰는 것과 비교하면:

Spring Boot + MySQLFirebase Firestore
쿼리 방식SQL (SELECT, INSERT...)JS SDK (getDoc(), addDoc())
스키마테이블 스키마 정의 필수스키마 없음 (유연하지만 관리 필요)
서버직접 운영Google이 운영
실시간직접 구현 (WebSocket 등)내장 (onSnapshot())

Realtime Database

Firestore 이전 세대의 DB. 하나의 큰 JSON 트리로 데이터를 저장한다. 신규 프로젝트에서는 Firestore를 쓰는 게 일반적이다.


인증 (Authentication)

로그인/회원가입을 직접 구현하지 않아도 된다.

  • 이메일/비밀번호
  • Google, GitHub, Twitter 등 소셜 로그인
  • 익명 로그인
// 이메일 로그인 예시
import { signInWithEmailAndPassword } from "firebase/auth";

signInWithEmailAndPassword(auth, email, password)
  .then((userCredential) => {
    const user = userCredential.user;
  });

Spring Security에서 직접 구현해야 했던 것들(세션 관리, 비밀번호 해싱, OAuth 연동 등)을 Firebase가 다 처리해준다.


호스팅 (Hosting)

정적 파일(HTML, CSS, JS)을 배포할 수 있는 CDN 호스팅. 나루와 비슷한 역할인데, Firebase 생태계와 통합된다.

  • 무료 SSL
  • 글로벌 CDN
  • CLI로 한 줄 배포 (firebase deploy)

나루 블로그의 경우 프론트를 나루에 올리므로, Firebase Hosting은 안 써도 된다.


스토리지 (Cloud Storage)

이미지, 동영상 등 파일을 저장하는 서비스. S3와 비슷한 역할이다.


그 외

  • Cloud Functions — 서버리스 함수 (Node.js). 서버 없이 백엔드 로직 실행
  • Cloud Messaging (FCM) — 푸시 알림
  • Analytics — 사용자 행동 분석
  • Remote Config — 앱 업데이트 없이 설정 변경

나루 갠홈에서 Firebase를 쓰는 이유

나루는 정적 파일만 호스팅한다. 서버 코드를 실행할 수 없으니 방명록, 일기장, 갤러리 같은 데이터를 저장하고 불러오는 기능을 만들 수가 없다.

Firebase를 붙이면 이 문제가 해결된다.

[ 브라우저 (나루 호스팅) ]
        │
        │  JS SDK로 직접 통신
        ▼
[ Firebase (Google 클라우드) ]
  ├── Firestore (DB)
  ├── Auth (로그인)
  └── Storage (이미지)

서버를 직접 만들지 않아도, 브라우저의 JS 코드가 Firebase SDK를 통해 곧바로 DB에 접근한다. hihihirobot이 정확히 이 구조다.

Firebase vs 자체 서버 (Spring Boot)

Firebase자체 서버 (Spring Boot)
초기 세팅빠름 (콘솔에서 클릭 몇 번)느림 (프로젝트 설정, DB 설치, 배포)
운영 비용무료 티어 넉넉 (소규모 갠홈은 무료)서버 비용 발생
자유도Firebase 규칙 안에서만원하는 대로 전부 가능
보안Firestore 보안 규칙으로 제어직접 구현 (Spring Security 등)
확장성Google 인프라 자동 스케일링직접 관리
학습Firebase SDK 학습 필요이미 익숙한 기술 스택
DBNoSQL (Firestore)RDB (MySQL 등) 선택 가능
갠홈 규모에서는

Firebase 무료 티어로 충분하다. Firestore 무료 읽기 5만 회/일, 쓰기 2만 회/일이면 개인 홈페이지에서 넘칠 일이 거의 없다. 다만 이미 Spring Boot를 다룰 줄 안다면, 자체 서버를 두는 것도 학습 겸 좋은 선택이다.

무료 티어 한도 (Spark 플랜)

서비스무료 한도
Firestore 읽기50,000회/일
Firestore 쓰기20,000회/일
Firestore 삭제20,000회/일
Firestore 저장1 GiB
Authentication무제한 (대부분의 제공자)
Hosting10 GiB 저장, 360 MiB/일 전송
Cloud Storage5 GB