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.rb
에config.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 부하 감소, 응답 속도 향상