MVC 패턴

지송현·2023년 1월 13일
0

개발 일반

목록 보기
2/5

MVC란?

디자인 패턴 중 하나로 Mode - View - Controller의 약자로 어플리케이션을 세 가지 역할로 구분했다.

위의 그림처럼 사용자가 controller를 조작하면 controller는 model을 통해 데이터를 가져오고 그 데이터를 바탕으로 view를 통해 시각적으로 유저에게 표현한다.

장점 :

  • 확장성 : 각 레이어가 서로 독립적이고 역할이 분명하므로 서로에게 끼치는 영향을 최소화하면서 확장하거나 수정할 수 있습니다.
  • 가독성 : 레이어가 완벽하게 분리되어 있고 역할이 명확하므로 가독성도 높아지니다. 코드의 구조를 파악하기가 쉬울 뿐만 아니라 각 레이어의 코드의 목적이 명확하고 범위도 확실하기 때문입니다.
  • 재사용성 : 레이어가 독립적이므로 business layer는 여러 다른 presentation layer에 적용될 수 있습니다. Express 기반의 API 엔드포인트에 적용된 business layer가 다른 프레임워크를 사용한 엔드포인트에 사용될 수도 있습니다.
  • 테스트 가능성 : 이미 명확한 역할에 이해 나뉘어 있으므로 각 레이어를 테스트하는 코드도 레이어가 나뉘는 것처럼 명확하게 나눌 수 있으며, 복잡한 로직이 아니라 명확하고 범위가 확실한 기능만을 테스트하기 쉽습니다. 또한 레이어들 자체가 다른 레이어에서 사용하는 구조이므로 테스트에서 호출해서 테스트해보기가 쉽습니다.

각 부분의 특징

  • Model

주로 DB와 연결되어 데이터에 접근, 조작할 수 있다.

  • View

사용자 혹은 클라이언트 시스템과 직접적으로 연결되는 부분이다.

  • Controller

view와 model의 다리 역할로 비즈니스 로직을 포함한다.

핵심 요소(layered 아키텍처)

조금 더 넓은 범위의 개념인 layered architecture의 핵심 요소에 대해서 알아보자. mvc에 공통적으로 적용될 것이다.

1. 단방향 의존성

각각의 레이어는 오직 자기보다 하위에 있는 레이어에만 의존하고 있다.
ex) view -> controller -> model 역방향은 불가

2. 관심사 분리(SOC)

관심사 분리(speration of concern)는 각 레이어의 역할이 구분되어 있다는 것을 뜻한다. 서로 겹치는 역할이 없다는 뜻이다.

위의 각 부분의 특징에서 볼 수 있듯이 그에 맞는 기능만을 담당한다.

profile
백엔드 개발자

0개의 댓글