Rails 8에 MongoDB를 선택하는 이유
-
유연한 스키마: JSON과 유사한 문서 형태로 데이터를 저장하여 엄격한 마이그레이션 없이 스키마를 진화시킬 수 있습니다.
-
높은 확장성: 샤딩을 통한 수평 확장을 지원하여 고트래픽 애플리케이션에 적합합니다.
-
API 중심 백엔드에 이상적: JSON을 반환하는 Rails 8 API 구축 시 MongoDB의 BSON 형식이 Ruby 해시와 자연스럽게 매핑됩니다.
-
빠른 개발 주기: 마이그레이션이 없고 데이터 구조 변경이 즉각적이며 중첩 객체 임베딩이 쉬워 개발 속도를 높입니다.
-
마이크로서비스에 적합: Rails를 마이크로서비스 아키텍처에서 사용할 때 서비스별로 경량의 독립적인 저장소를 제공합니다.
Rails 8과 MongoDB 및 Mongoid 설정 단계
-
MongoDB 설치: macOS(Homebrew), Ubuntu/Debian, Windows 등 운영체제에 맞는 MongoDB 서버를 설치하고 실행합니다.
-
Rails 8 프로젝트 생성:
rails new myapp --skip-active-record명령어를 사용하여 ActiveRecord 없이 Rails 앱을 생성합니다. -
Mongoid Gem 추가:
Gemfile에gem "mongoid", "~> 9.0"을 추가하고bundle install을 실행합니다. -
Mongoid 설정 파일 생성:
rails g mongoid:config명령어로config/mongoid.yml파일을 생성합니다. -
MongoDB 연결 구성:
mongoid.yml파일에서 데이터베이스 이름, 호스트 등을 필요에 따라 사용자 정의합니다. -
Mongoid 모델 생성:
rails g model Article로 모델을 생성한 후,include Mongoid::Document및include Mongoid::Timestamps를 추가하고 필드를 직접 정의합니다. (예:field :title, type: String) -
컨트롤러 및 라우트 추가:
rails g controller articles로 컨트롤러를 생성하고,index및create액션을 구현하며,resources :articles라우트를 추가합니다. -
Rails 서버 시작 및 데이터 생성:
rails s로 서버를 시작하고curl명령어를 사용하여 데이터를 생성하고 확인합니다.
Mongoid의 작동 방식 및 장점
Mongoid는 ActiveRecord를 완전히 대체하여 SQL 테이블 대신 MongoDB 컬렉션과 상호작용합니다. 마이그레이션이 필요 없고, 문서 임베딩을 지원하며, 빠른 반복 개발과 현대적 아키텍처(헤드리스 API, 마이크로서비스)에 적합하다는 장점이 있습니다.