uby on Rails - MVC 모델 및 REST 아키텍처

소개



Ruby on Rails 튜토리얼을 실시하고 있습니다.
튜토리얼 제2장의 배우기로서, MVC 모델과 REST 아키텍쳐를 나름대로 해석해, 정리했습니다.

MVC 모델



MVC란?



MVC는 소프트웨어의 설계 모델 중 하나로 기능을 "Model"(모델), "View"(뷰), "Controller"(컨트롤러)의 3가지 역할로 분리하여 구현하고, 이들이 연계 처리를 진행시키는 방식.
- IT 용어 사전 e-Words에서 인용

많은 웹 애플리케이션 설계에 사용되는 기술입니다.
Ruby on Rails에서도 MVC 모델을 기반으로 한 제작되고 있습니다.

Ruby on Rails에서 MVC의 역할



● Model



Controller의 명령을 받아, 데이터에 관한 처리를 실시해, 결과를 Controller에 반환합니다.
처리는 데이터베이스와의 교환, 데이터 가공, 데이터 체크 등입니다.

● View



Controller의 명령을 받아 브라우저에 표시하는 HTML을 생성해, Controller에 반환합니다.
표시에 필요한 정보는 Controller에서 받습니다.

● Controller



Model과 View에 처리를 명령하고 요청을 받은 결과를 응답합니다.

※ 라우팅에 대해서

브라우저로부터의 요청을 받으면, 라우팅에 의해 처리 대상의 Controller에 배분됩니다.
처리의 흐름을 도해로 하면 다음과 같은 이미지가 됩니다.


REST 아키텍처



REST란?



REST는 분산 시스템에서 여러 소프트웨어를 연계시키는 데 적합한 설계 원칙 중 하나입니다. 2000년에 로이 필딩(Roy Fielding)씨가 제창했다. 협의는, 그것을 웹 시스템에 적용한 소프트웨어의 설계 양식을 가리키며, 일반적으로는 이 의미로 사용되는 것이 대부분이다.
- IT 용어 사전 e-Words에서 인용

한마디로 웹의 구조를 실현시키기 위한 설계 지침입니다.
자세한 것은 이하의 페이지가 참고가 되었습니다.
  • REST 입문 기초 지식
  • REST API란 무엇인가? 이해하기 쉽게 설명하기 위해 논문을 읽었습니다.

  • Ruby on Rails의 REST란?



    REST는 응용 프로그램을 구성하는 구성 요소(예: 사용자, 마이크로포스트 등)를 리소스로 모델링하는 것을 의미합니다.
    이러한 리소스는 관계형 데이터베이스 생성/취득/업데이트/삭제(Create/Read/Update/Delete: CRUD) 작업과 네 가지 기본 HTTP 요청 메서드(POST/GET/PATCH/DELETE) 모두에 해당합니다. 하고 있습니다.
    - Ruby on Rails 튜토리얼에서 인용

    ● 리소스



    브라우저에 URL을 입력하면 지정된 웹 페이지에 액세스하게 되지만 해당 액세스 대상을 리소스로 정의합니다.
    Rails는 라우팅을 통해 Controller를 통해 처리가 이루어지는 메커니즘이기 때문에 라우팅 이후의 구성 요소를 리소스로 생각합니다.


    ● HTTP 메소드 및 CRUD 조작



    REST의 설계 지침 중 하나는 리소스의 CRUD 조작과 HTTP 메소드의 연결을 수행하는 것입니다.
    그 연결은 라우팅에 의해 이루어집니다. 구체적으로는 URL 경로에서 결정합니다.

    Rails 튜토리얼의 실천이었던 유저 정보에의 CRUD 조작을 예로 해, 표로 하면 이하와 같은 내용이 됩니다.


    HTTP 메소드
    URL 경로
    액션
    액션 목적
    CRUD 조작


    GET
    /users
    색인
    모든 사용자 보기
    Read(취득)

    POST
    /users
    create
    사용자 만들기
    Create(만들기)

    GET
    /users/1
    show
    id=1인 사용자 보기
    Read(취득)

    패치
    /users/1
    update
    id=1인 사용자 업데이트
    Update(업데이트)

    DELETE
    /users/1
    destroy
    id=1인 사용자 삭제
    Delete(삭제)

    좋은 웹페이지 즐겨찾기