eatthefrog

MongoDB를 잘 사용했을 때 얻는 이점 본문

백엔드 노트

MongoDB를 잘 사용했을 때 얻는 이점

eater_forg 2025. 11. 20. 17:58

 

1. MongoDB 도입 역사 (왜 등장했나?)

  • 2007년 웹서비스가 갑자기 확 커지던 시기
  • 기존 RDBMS(MySQL, Oracle)가
    • 스키마 고정
    • 수평 확장 어려움
    • JSON 같은 유연한 데이터 받기 불편
      이런 약점들을 드러냄
  • 그 시점에 등장한 MongoDB는
    👉 “빠르게 변하는 데이터를 더 자유롭게 저장하고 확장하고 싶다!”
    이런 개발자들의 욕망(?)을 충족시킨 NoSQL 솔루션
  • 당시 개발자들 반응:
  • “헉, 조인도 안 쓰고 이렇게 편하게 저장해도 되나…? 와 개꿀!”

2. MongoDB 주요 개념

① Document Model

  • JSON과 거의 똑같이 생긴 Document 기반
  • 테이블-행 구조가 아니라 컬렉션-문서(Document) 구조
  • 구조가 달라도 같은 컬렉션에 넣을 수 있어 유연함
  • 즉,
    👉 “급하게 필드 하나 넣고 싶을 때 테이블 수정 안 해도 됨!”

② 스키마리스(Schema-less)

  • 스키마 강제 없음
  • 앱이 빨리 변하는 환경에서 특히 유용
  • 다만 “완전 무규칙이 아님" — 필요하면 schema validation 적용 가능

③ 수평 확장(Sharding)

  • 데이터가 많아지면 서버 여러 개로 분산 저장 가능
  • 고트래픽에도 버틸 수 있음
  • “하나의 DB 서버는 결국 터진다” 문제를 해결

④ 풍부한 Index & Aggregation Framework

  • 단순 CRUD뿐 아니라
    • 정렬
    • 복합 인덱스
    • 텍스트 검색
    • 파이프라인 기반 집계
      등 분석용 기능이 꽤 강함
  • 사용자의 질문: “이건 SQL 조인처럼 되나요?”
    MongoDB: “그럼요. $lookup 있습니다만?”

⑤ 클라우드 네이티브 (Atlas)

  • 자동 백업, 모니터링, 서버리스, 글로벌 배포 등
  • 개발자는 서버 신경 덜 씀
  • 즉, 👉 “DB 관리 스트레스 ↓, 개발 집중 ↑”

3. MongoDB를 사용했을 때 얻는 이점

1) 개발 속도 빨라짐

  • JSON 기반이라 프론트/백엔드 연동이 직관적
  • 필드 추가/변경이 자유로워서 초기 개발 속도 미친 듯이 빠름

2) 데이터 구조 변화에 유연

  • 제품/서비스가 자주 바뀌는 스타트업 환경에 특히 강점
  • 스키마 migration 부담이 적음
  • “칼럼 추가한다고 새벽 3시에 DBA 깨우기”가 사라짐

3) 대규모 트래픽과 데이터에 강함

  • 자동 샤딩
  • 인덱스 다양
  • 메모리 기반 성능 최적화
  • 수평 확장 쉬움
  • 고성능 서비스 만들기 좋음

4) 복잡한 쿼리도 Aggregation Pipeline으로 해결

  • SQL 같은 JOIN, GROUP BY, SUM, COUNT 모두 가능
  • 파이프라인 방식이라 직관적이고 단계별 디버깅 쉬움
  • 로그 처리, 통계 대시보드, 이벤트 분석에 매우 잘 맞음

5) 개발자 경험(Developer Experience) 좋음

  • Atlas UI + Compass 등 도구가 잘 되어 있음
  • Node.js, Python, Java 등의 드라이버도 사용 방식 거의 비슷해 직관적
  • 문서화 잘 되어 있음 (이거 진짜 중요!)

🎯 한 줄 요약

MongoDB는 빠르게 변하고, 구조가 자유롭고, 대규모 데이터를 다루는 현대 서비스를 위해 등장했으며,
문서 기반 모델, 스키마 유연성, 수평 확장, 강력한 집계 기능 덕분에
개발 속도와 운영 편의성이 크게 향상되는 DB이다!