피드로 돌아가기
Dev.toDatabase
원문 읽기
Flat Collection 기반 설계로 Wide/Deep Scale 비용 91% 절감
Firestore Architecture For Scaling Read-Intensive Multi-Tenant Software
AI 요약
Context
Multi-tenant SaaS 환경에서 Firestore의 Subcollection 구조 채택 시 발생하는 복잡한 Query 및 과도한 Read 비용 문제를 분석함. 특히 Tenant 규모가 커지는 Deep Scale과 Tenant 수가 증가하는 Wide Scale 상황에서 서로 다른 병목 지점이 발생함을 식별함.
Technical Solution
- Subcollection 대신 Top-level Collection에 companyId를 포함하는 Flat Layout 구조 설계
- Collection Group Query 배제로 인한 Composite Index 생성 및 Security Rule 복잡도 최소화
- 단일 Socket 연결을 통한 onSnapshot 리스너 범위 최적화로 메모리 누수 및 Read 비용 폭증 방지
- 전역 필터링(where companyId == X) 기반의 단순화된 데이터 마이그레이션 및 일괄 수정 경로 확보
- Read-intensive 부하 해결을 위한 Daily Rollup 패턴 도입으로 개별 로그 조회 빈도 감소
실천 포인트
1. Tenant 1,000개 이상 또는 단일 Tenant 내 차량 50대 이상 예상 시 초기부터 Rollup 패턴 설계
2. Cross-tenant 관리자 쿼리 빈도가 높다면 Subcollection보다 Flat Collection 우선 검토
3. 실시간 리스너(onSnapshot) 사용 시 리스너 개수가 Read 비용에 직결되므로 단일 쿼리 범위로 통합