# 멀티에이전트 미팅: Firebase Emulator 및 DB 모듈화 검토

> **일시**: 2026-02-09 17:00
> **안건**: Firebase Quota 문제 해결 및 아키텍처 개선 검토

---

## 참석 에이전트

| 역할 | 에이전트 | 관점 |
|------|----------|------|
| 🏗️ Backend | Architect | 시스템 아키텍처, DB 설계 |
| 🎨 Frontend | Designer | 사용자 경험, 성능 |
| 📊 Data | Analyst | 데이터 흐름, 최적화 |
| 🧪 QA | Tester | 테스트 환경, 품질 |
| 📋 PM | Coordinator | 일정, 우선순위 |

---

## 1. 현재 상황 브리핑 (PM)

**문제**: Firebase Spark Plan Quota 초과
- 읽기 50,000회/일 한도 초과 추정
- 개발 중 Hot Reload + onSnapshot으로 급증

**해결안 검토 대상**:
1. Firebase Emulator 설정
2. DB 추상화 (Repository 패턴)

---

## 2. 각 에이전트 의견

### 🏗️ Backend Architect

**Firebase Emulator에 대해:**
> ✅ **추천합니다.**
> - 로컬 개발 시 무제한 테스트 가능
> - 실제 Firestore와 동일한 API
> - Auth Emulator도 함께 사용 가능

**모듈화(Repository 패턴)에 대해:**
> ⚠️ **현재 단계에서는 과도합니다.**
> - 1인 개발 + 초기 단계에서 오버엔지니어링
> - DB 교체 계획 없으면 불필요한 추상화
> - **나중에 필요 시 점진적 리팩토링 권장**

**권장 접근법:**
```
지금: lib/firebase.ts에 Emulator 조건 분기만 추가
나중: DB 교체 결정 시 Repository 패턴 도입
```

---

### 🎨 Frontend Designer

**사용자 경험 관점:**
> Emulator 사용해도 프론트엔드 코드 변경 없음.
> 개발 속도 향상 → 더 나은 UX 개선에 집중 가능.

**성능 최적화 제안:**
> 실시간 구독(`onSnapshot`) 대신 필요 시 `getDocs` 사용 검토.
> 목록 페이지는 실시간 불필요할 수 있음.

---

### 📊 Data Analyst

**Quota 소비 분석:**
| 기능 | 예상 읽기/회 | 개선 가능성 |
|------|-------------|-------------|
| 메인 페이지 로드 | 문서 수 × 1 | 캐싱 가능 |
| HubDocuments | 전체 Wiki 조회 | 서버사이드 집계 권장 |
| 문서 상세 | 1 | 적정 |

**제안:**
> HubDocuments의 `incomingLinkCount`를 실시간 집계 대신
> **Firestore에 필드로 저장**하면 읽기 횟수 대폭 감소.

---

### 🧪 QA Tester

**테스트 환경:**
> ✅ Emulator 설정 시 CI/CD 파이프라인에서도 활용 가능.
> 자동화 테스트에 실제 Firebase 연결 불필요.

**주의사항:**
> Emulator 데이터는 휘발성 → 시드 데이터 스크립트 필요.

---

### 📋 PM (최종 정리)

**즉시 실행 (Priority 1):**
- [x] Firebase Emulator 설치
- [x] 환경 변수 분리
- [ ] lib/firebase.ts 수정

**보류 (Priority 2 - 나중에):**
- [ ] Repository 패턴 도입
- [ ] incomingLinkCount 필드 저장 방식 전환
- [ ] 캐싱 레이어 추가

---

## 3. 결론

| 항목 | 결정 | 이유 |
|------|------|------|
| Firebase Emulator | ✅ 진행 | 즉시 효과, 변경 최소 |
| Repository 패턴 | ⏳ 보류 | 현재 1인 개발에 과도함 |
| HubDocuments 최적화 | 📝 기록 | 향후 성능 이슈 시 적용 |

**다음 액션:**
1. Firebase Emulator 설치 및 설정
2. 환경 변수 분리 (.env.local / .env.production)
3. lib/firebase.ts에 에뮬레이터 조건 추가

---

## 4. 참고: 향후 DB 교체 시 영향 범위

현재 Firebase 직접 호출 위치:
- `lib/firebase.ts` - 초기화
- `app/page.tsx` - 문서 목록 조회
- `app/docs/[id]/page.tsx` - 문서 CRUD
- `components/HubDocuments.tsx` - 허브 문서 조회
- `contexts/AuthContext.tsx` - 인증

**예상 수정 파일 수**: 5개
**예상 작업 시간**: 1~2일 (Repository 패턴 도입 시)
