피드로 돌아가기
Dev.toDatabase
원문 읽기
Firestore 읽기 1M회에서 무료 티어 수준으로 절감 및 응답 속도 개선
AI created slow and expensive code. How I analyzed and fixed it.
AI 요약
Context
AI 생성 코드로 구축한 브라우저 게임 포털의 사용자 증가에 따른 Firebase 비용 급증 및 API 성능 저하 발생. Firestore의 비효율적인 쿼리 패턴으로 인해 일일 읽기 횟수가 무료 티어(50k)의 20배인 1M회에 달하는 구조적 한계 직면.
Technical Solution
- N+1 Read 패턴 제거를 위한 Collection Group Query 도입으로 전체 프로필 스캔 방식에서 대상 문서 직접 조회 방식으로 전환
- React 컴포넌트 수준의 중복 API 요청 방지를 위한 Request Deduplication 적용으로 불필요한 트래픽 제거
- 불필요한 하위 컬렉션 로드를 방지하는 Data Fetching 최적화로 오버페칭(Over-fetching) 문제 해결
- 다수 문서 조회 후 가중치를 계산하던 로직을 사전 계산된 상태를 단일 문서에 저장하는 SeedWeights Map 구조로 변경하여 Read 횟수 최소화
- Google Cloud Observability 및 Firestore Query Insights를 통한 데이터 기반의 병목 지점 식별 및 최적화 타겟팅
실천 포인트
- 데이터베이스 쿼리가 루프 내부에서 실행되는 N+1 패턴이 존재하는지 전수 조사 - 클라이언트 사이드에서 동일한 리소스에 대한 중복 요청이 발생하는지 네트워크 탭 확인 - API 응답 데이터 중 실제 UI에서 사용하지 않는 필드나 컬렉션이 포함된 Over-fetching 여부 검토 - 빈번한 집계 연산이 필요한 경우, 조회 시점 계산 대신 상태 업데이트 시점에 사전 계산하여 저장하는 캐싱 전략 고려