AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

MongoDB 사용하여 Ruby on Rails 애플리케이션의 성능 향상 전략

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Ruby on Rails 및 MongoDB를 사용하는 개발자, 특히 성능 최적화를 목표로 하는 중급 이상의 개발자

핵심 요약

  • Mongoid의 Query Cache 사용: SQL 캐시 유사한 방식으로 MongoDB 쿼리 결과를 캐싱하여 중복 요청 감소 (예: Mongo::QueryCache::Middleware 활용)
  • RailsMDB 도구 활용: MongoDB와 Rails 애플리케이션의 빠른 설정 가능 (railsmdb new product_app 명령어)
  • 캐시 무효화 메커니즘: DB 쓰기(생성/수정/삭제) 시 자동으로 캐시가 지워져 항상 최신 데이터 제공

섹션별 세부 요약

1. 환경 설정 및 프로젝트 생성

  • 필요 조건: Ruby 2.7+, Rails 6+, MongoDB Atlas 클러스터
  • RailsMDB 설치: gem install railsmdb --pre 명령어로 설치
  • 프로젝트 생성: railsmdb new product_app 명령어로 MongoDB 지원 애플리케이션 생성

2. 모델 및 컨트롤러 구성

  • Product 모델 생성: railsmdb generate model Product 명령어로 생성, store_in 설정으로 sample_supplies.sales 컬렉션 매핑
  • 필드 정의: field :items, type: Array, field :saleDate, type: Time 등 MongoDB 데이터 구조 반영

3. Query Cache 미들웨어 적용

  • 미들웨어 활성화: _config/application.rbconfig.middleware.use Mongo::QueryCache::Middleware 추가
  • 특정 액션에서 캐시 적용: Mongo::QueryCache.cache do ... end 블록으로 index 액션에 캐시 적용

4. 캐시 동작 테스트 및 로깅

  • 쿼리 로깅 설정: _config/mongoid.yml에서 log_level: :debug 설정 후 Rails 콘솔에서 Product.where(...) 쿼리 수행
  • 캐시 무효화 검증: Product.update(...) 실행 후 두 번째 쿼리가 DB 대신 캐시 결과 사용 확인

5. Aggregation 쿼리 캐싱

  • Aggregation 파이프라인 캐싱: Product.collection.aggregate([...]) 쿼리가 캐시 블록 내에서 단일 DB 요청으로 처리됨
  • 캐시 무효화 조건: DB 쓰기 시 자동 무효화, Mongo::QueryCache.cache 블록 외부 실행 시 캐시 미적용

결론

  • 핵심 팁: Mongo::QueryCache::Middleware를 사용해 중복 쿼리 제거, store_in 설정으로 데이터 모델 정확히 매핑, 캐시 무효화 조건을 이해해 실시간 데이터 보장
  • 성능 향상 효과: 단일 요청 내 반복 쿼리 최소화, DB 부하 감소, 응답 속도 향상