MVC패턴? 3 Tier Architecture?

바그다드·2023년 4월 25일
0
  • 스프링을 사용하며 mvc패턴에 익숙해졌다고 생각하고 있었는데 막상 Service는 컨트롤러와 모델 중에 어느쪽에 가까운가? 라고 묻는 질문에 대답을 하지 못하였다. MVC도 들어봤고, 3Tier Layer도 들어봤는데 그럼 MVC는 무엇이고, 3Tier Layer는 무엇일까?

MVC

  • 모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델(M)은 애플리케이션의 정보(데이터)를 나타내며, 뷰(V)는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.출처
  • 그럼 MVC 각 요소의 역할에 대해서 알아보자

MVC 역할

  • 모델: 데이터와 비즈니스 로직을 관리한다.
    - 서비스 계층에 비즈니스 로직이 들어가 있으므로 서비스 계층은 모델에 더 가깝다고 볼 수 있다.
    • DB와 연동하는 Repository도 모델에 가깝다고 볼 수 있다.
  • 뷰: 레이아웃과 화면을 처리한다.
    - jsp / tymeleaf 등이 뷰에 해당한다.
  • 컨트롤러: 명령을 모델과 뷰 부분으로 라우팅한다.

3Tier


프레젠테이션 계층 - 비즈니스 계층 - 데이터 계층을 각각 물리적으로 독립된 모듈로 개발하고 유지하는 구조를 말한다. 각 레이어는 인접한 레이어끼리만 통신할 수 있다.

  1. Web Layer(Presentation Layer)
    Controller나 JSP / thymeleaf 등 View 템플릿 영역이다.
    이외에도 Filter, Intercepter, ControllerAdvice등 외부 요청과 응답에 대한 전반적인 영역을 말한다.
  2. Service Layer(Business Layer)
    일반적으로 Controller와 Dao의 중간 영역에서 사용된다.
    @Transactional이 사용되어야 하는 영역이다.
    스프링에서 Service가 여기에 해당한다고 할 수 있다.
  3. Repository Layer(Persistence Layer)
    DB에 접근하는 영역
    Dao(Data Access Object) 영역
  4. DTOs
    계층이나 클라이어트/서버 간에 데이터를 주고 받기 위해 사용하는 객체를 말한다.

MVC와 3Tier의 차이

  • 3티어 아키텍쳐는 물리적인 공간을 기준으로 역할을 구분하고, MVC패턴은 소프트웨어 디자인패턴 중 하나로 컴포넌트간 역할분담을 말한다. 3Tier가 물리적인 공간을 나눈 것이라면, MVC는 각 요소 간의 역할을 분리한 것이다.

    따라서 MVC패턴을 적용하였고 3tier 구조로 되어있는 프레임워크를 갖추고 있다라고 하기도 한다.

profile
꾸준히 하자!

0개의 댓글