Firebase 설정 및 배포 가이드 (2025)
Firebase란?
Firebase는 Google의 모바일 및 웹 앱 개발 플랫폼입니다. 인증, 데이터베이스, 스토리지, 호스팅 등 백엔드 기능을 코드 없이 쉽게 사용할 수 있습니다.
2025년 주요 업데이트: Firebase App Hosting이 정식 출시(GA)되어 Next.js 앱의 SSR과 CI/CD가 자동으로 설정됩니다.
1. Firebase 프로젝트 생성
1.1 Firebase Console 접속
- Firebase Console에 접속
- Google 계정으로 로그인
- "프로젝트 추가" 클릭
1.2 프로젝트 설정
프로젝트 이름: my-awesome-app
Google Analytics: 활성화 (추천)
결제 계정: SSR 사용 시 필요 (Cloud Functions)
💡 Tip: Next.js에서 SSR을 사용하려면 Blaze 요금제(종량제)가 필요합니다. 무료 할당량이 충분하므로 소규모 프로젝트는 거의 무료로 사용 가능합니다.
2. Firebase CLI 설치 및 로그인
2.1 Firebase CLI 설치
# npm으로 전역 설치
npm install -g firebase-tools
# 설치 확인
firebase --version2.2 Firebase 로그인
# 브라우저가 열리며 Google 계정 인증
firebase login
# 로그인 확인
firebase projects:list3. Next.js 프로젝트에 Firebase 연결
3.1 프로젝트 초기화
# Next.js 프로젝트 디렉토리에서 실행
cd my-nextjs-app
firebase init hosting
# 선택 옵션:
# - Existing project: [당신의 Firebase 프로젝트 선택]
# - Public directory: out (또는 .next)
# - Configure as SPA: No
# - Automatic builds with GitHub: No (나중에 설정 가능)3.2 firebase.json 설정
자동 생성된 firebase.json 파일:
{
"hosting": {
"public": "out",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}4. Firebase App Hosting (2025 권장)
✨ 2025년 권장 방식: Firebase App Hosting은 Next.js의 SSR, SSG, API Routes를 자동으로 Cloud Run과 CDN에 배포해주는 최신 기능입니다.
4.1 App Hosting 초기화
# Next.js 프로젝트에서 실행
firebase init apphosting
# 선택사항:
# - Create new backend or select existing
# - Link GitHub repository (추천)
# - Configure build settings (자동 감지)4.2 배포
# 로컬 소스로 배포
firebase deploy --only apphosting
# GitHub 연결 시 자동 배포
# → main 브랜치에 push하면 자동으로 배포됨4.3 주요 기능
- 자동 CI/CD: GitHub 푸시 시 자동 빌드 및 배포
- SSR 지원: Cloud Run에 서버 로직 자동 배포
- Global CDN: 정적 콘텐츠 전세계 캐싱
- 자동 HTTPS: SSL 인증서 자동 관리
5. 기존 Firebase Hosting (정적 사이트)
정적 사이트만 배포할 경우 (SSR 없이 SSG만 사용):
5.1 Next.js 정적 빌드
# next.config.js에 추가
module.exports = {
output: 'export',
}
# 빌드
npm run build
# → out/ 디렉토리에 정적 파일 생성5.2 배포
# Hosting만 배포
firebase deploy --only hosting
# 배포 완료 후 URL 확인
# → https://프로젝트ID.web.app6. 주요 Firebase CLI 명령어
# 프로젝트 목록 확인
firebase projects:list
# 현재 프로젝트 설정
firebase use 프로젝트ID
# 로컬 에뮬레이터 실행 (테스트용)
firebase emulators:start
# Hosting만 배포
firebase deploy --only hosting
# Functions만 배포
firebase deploy --only functions
# 전체 배포
firebase deploy
# 배포 취소 (롤백)
firebase hosting:channel:deploy 채널이름
# 로그 확인
firebase functions:log7. Firebase Functions (서버리스 백엔드)
7.1 Functions 초기화
firebase init functions
# 선택사항:
# - Language: JavaScript 또는 TypeScript
# - ESLint: Yes (추천)
# - Dependencies: Yes7.2 함수 작성 예시
// functions/index.js
const functions = require('firebase-functions');
// HTTP 함수
exports.helloWorld = functions.https.onRequest((req, res) => {
res.send("Hello from Firebase!");
});
// 예약 함수 (매일 자정 실행)
exports.dailyJob = functions.pubsub
.schedule('0 0 * * *')
.onRun((context) => {
console.log('Daily job running!');
});7.3 배포
firebase deploy --only functions8. 환경 변수 및 시크릿 관리
8.1 Firebase 환경 변수 설정
# 환경 변수 설정
firebase functions:config:set api.key="YOUR_API_KEY"
# 확인
firebase functions:config:get
# Functions에서 사용
const apiKey = functions.config().api.key;8.2 Next.js 환경 변수
.env.local 파일:
NEXT_PUBLIC_FIREBASE_API_KEY=your_key
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
9. 자주 발생하는 문제 해결
❌ Error: Billing account not configured
해결: Firebase Console → Project Settings → Usage and Billing → Blaze 요금제로 업그레이드 (SSR 사용 시 필수)
❌ Error: Firebase CLI not found
해결: npm install -g firebase-tools 재실행
❌ 403 Permission denied
해결: firebase login 다시 실행하여 권한 재인증
10. Firebase 베스트 프랙티스 (2025)
Node.js 버전: 18.x 이상 사용
최신 기능 및 보안 업데이트 적용
CI/CD로 자동 배포 설정
GitHub Actions 또는 Firebase App Hosting의 내장 CI/CD 활용
Functions는 폴더별로 분리
functions/user/, functions/payments/ 등으로 구조화
로컬 에뮬레이터로 테스트
firebase emulators:start로 배포 전 검증
의존성 정기 업데이트
보안 취약점 방지 및 성능 최적화
참고 자료
빠른 참조 카드
🚀 빠른 배포
npm run build && firebase deploy🧪 로컬 테스트
firebase emulators:start📊 로그 확인
firebase functions:log🔄 롤백
firebase hosting:rollback