MVC 패턴
Model-View-Controller — Rails의 핵심 아키텍처
MVC(Model-View-Controller)는 소프트웨어 설계 패턴으로, Rails의 근간입니다.
Model: 데이터와 비즈니스 로직을 담당합니다. 데이터베이스 테이블과 1:1로 매핑되며, ActiveRecord를 통해 SQL 없이 데이터를 조작할 수 있습니다. 유효성 검사, 관계 설정, 콜백 등도 Model에서 처리합니다.
View: 사용자에게 보이는 화면을 담당합니다. ERB(Embedded Ruby) 템플릿으로 HTML 안에 Ruby 코드를 삽입합니다. 레이아웃, 파셜(partial)로 재사용 가능한 UI 조각을 만듭니다.
Controller: HTTP 요청을 받아 적절한 Model을 호출하고, 결과를 View에 전달하는 중개자입니다. 인증, 권한 확인, 파라미터 처리 등을 담당합니다.
Rails에서 요청 흐름: 브라우저 → 라우터 → Controller → Model(DB 조회) → Controller(데이터 전달) → View(HTML 생성) → 브라우저
구조 다이어그램
GET /posts/1
config/routes.rb
핵심 포인트
사용자가 브라우저에서 URL 요청 (예: GET /posts/1)
config/routes.rb에서 URL을 Controller#Action으로 매핑 (posts#show)
PostsController#show가 실행 — @post = Post.find(params[:id])
Model(Post)이 ActiveRecord를 통해 DB에서 데이터 조회
Controller가 @post 인스턴스 변수를 View에 전달
View(show.html.erb)가 @post 데이터를 HTML로 렌더링하여 브라우저에 반환
장점
- ✓ 관심사의 분리 — 코드 구조가 명확
- ✓ 팀 협업 용이 (디자이너=View, 개발자=Model)
- ✓ Rails 컨벤션으로 자동 매핑
- ✓ 코드 재사용성 높음
단점
- ✗ 간단한 앱에서는 과도한 구조
- ✗ Controller가 비대해지기 쉬움 (Fat Controller)
- ✗ Model이 너무 많은 책임을 가질 수 있음 (God Model)
- ✗ Service Object 등 추가 패턴이 필요한 경우 있음