MongoDB 운영 가이드 - low-hill/Knowledge GitHub Wiki

몽고디비의 초기 사이징을 결정할 때 고려해야 할 주요 요소들을 설명해드리겠습니다:

1. MongoDB 데이터 크기 예측 가이드

1. 단일 문서 크기 계산

예시 문서 구조

{
"id": ObjectId, // 12 bytes
"userId": String, // ~24 bytes
"name": String, // ~20 bytes
"email": String, // ~32 bytes
"createdAt": Date, // 8 bytes
"updatedAt": Date // 8 bytes
}
// 예상 크기: ~104 bytes + 문서 오버헤드

고려사항

  • BSON 형식 오버헤드: 약 문서당 +30-60 bytes
  • 필드명도 저장 공간 차지
  • 가변 길이 필드는 최대 길이 고려

2. 예상 문서 수 계산

월간/연간 문서 수 계산 공식

일일 신규 문서 수 = (일일 활성 사용자 수 × 사용자당 생성 문서 수)
월간 문서 수 = 일일 문서 수 × 30
연간 문서 수 = 월간 문서 수 × 12

3. 전체 데이터 크기 계산

계산 공식

기본 데이터 크기 = 문서 크기 × 총 문서 수
인덱스 크기 = 기본 데이터 크기 × 0.2 (일반적으로 20% 추가)
총 필요 용량 = (기본 데이터 크기 + 인덱스 크기) × 1.3 (30% 여유 공간)

4. 성장률 계산

예상 크기 계산 공식

6개월 예상 크기 = 현재 크기 × (1 + 월간성장률)^6
12개월 예상 크기 = 현재 크기 × (1 + 월간성장률)^12

5. 실제 크기 측정 명령어

컬렉션 크기 확인

db.runCommand({
collStats: "yourCollection",
scale: 10241024 // MB 단위로 보기
})

데이터베이스 전체 크기 확인

db.runCommand({
dbStats: 1,
scale: 10241024
})

6. 크기 예측 체크리스트

  • 문서당 평균 크기 계산
  • 예상 문서 증가량 계산
  • 인덱스 크기 고려
  • 백업 공간 고려
  • 로그 파일 크기 고려
  • 성장률 반영
  • 버퍼 공간 (30% 이상) 확보

7. 주의사항

  • 압축 사용 시 실제 저장 공간은 줄어들 수 있음
  • WiredTiger 스토리지 엔진 사용 시 기본 압축률 고려
  • 샤딩 계획이 있다면 초기부터 고려
  • 백업 정책에 따른 추가 공간 필요

8. 권장 모니터링 도구

  • MongoDB Compass
  • MongoDB Atlas 모니터링
  • Google Cloud Monitoring

참고사항

초기 설정 후 최소 3개월간 성장 패턴을 면밀히 모니터링하여 예측의 정확도를 높이는 것을 권장합니다.

  1. 워크로드 특성
  • 동시 접속자 수
  • 읽기/쓰기 비율
  • 쿼리 복잡도
  • 피크 시간대 트래픽
  1. 권장 초기 사이징 가이드
  • 소규모 시작:
    • vCPU: 2-4개
    • RAM: 8-16GB
    • 스토리지: 50-100GB
  • 중간 규모 시작:
    • vCPU: 4-8개
    • RAM: 16-32GB
    • 스토리지: 100-500GB
  1. 구글 클라우드 특화 고려사항
  • 머신 타입: n1-standard 또는 n2-standard 시리즈 권장
  • 영구 디스크: SSD 권장
  • 리전 선택: 한국 리전 사용 시 지연시간 최소화
  1. 확장성 계획
  • 수직적 확장(Scale-up) 가능성
  • 수평적 확장(Scale-out) 계획
  • 샤딩 전략
  1. 모니터링 설정 (Google Cloud Monitoring)
  • CPU 사용률
  • 메모리 사용량
  • 디스크 I/O
  • 네트워크 대역폭 초기 구성 후에는 실제 사용 패턴을 모니터링하면서 필요에 따라 조정하는 것이 좋습니다. 특히 처음 1-2개월 동안은 면밀한 모니터링이 필요합니다.