기록이 힘이다.

[원티드 과제] MVC 패턴과 Layered Architecture 비교해보기 본문

Architecture

[원티드 과제] MVC 패턴과 Layered Architecture 비교해보기

dev22 2023. 3. 9. 12:59
728x90

면접을 위한 CS 전공지식 노트

MVC 패턴(Model-View-Controller) : 디자인 패턴 중 하나이다.

모델(Model)은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻합니다.

뷰(View)는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타냅니다. 화면

컨트롤러(Controller)는 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 담당합니다. 또한 모델과 뷰의 생명주기도 관리하며, 모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성 요소에 해당 내용에 대해 알려줍니다.

 

애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성요소에만 집중해서 개발할 수 있습니다. 재사용성과 확장성이 용이하다는 장점이 있고, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있습니다.

 

https://velog.io/@ttomy/mvc%EA%B5%AC%EC%A1%B0layered-architecture

 

mvc구조,layered architecture

mvc구조 mvc구조는 model,view,controller로 구성된 구조이다. model,view,controller은 간략히 말하자면 model(실제 데이터의 저장,변경이 이뤄지는 실제 동작이 수행되는 부분) view(화면에 그려지는 부분) contro

velog.io

layered architecture(계층화 구조) : 아키텍처 중 하나이다

  • Presentation Layer
    • 웹 페이지, ui를 화면에 보여주고 api로 통신하는 영역이다.
  • Business Layer
    • 보안, 접근권한, 인증, 허가 설정, validation, middle ware, proxy 등의 business의 수행을 위한 요소들이 포함되는 계층이다.
  • Persistence Layer(data Access layer)
    • Dao, ORM을 포함한다. 어플리케이션 level에서 db로부터 가져와 ram에 저장된 데이터들을 관리하는 계층이다.
  • Database Layer
    • 실제 데이터베이스 부분(mysql, oracle, mariadb, mongodb...)과 SANs(Storage Area Networks)를 가리킨다.

<<Spring의 경우>>

  • Presentation Layer
    • View와 Controller
  • Business Layer
    • Service
  • Persistence Layer(data Access layer)
    • Dao, Orm
  • Database Layer
    • 데이터베이스 부분

 

spring web

계층간의 연결에 흔히 dto가 쓰이지만 필요성에 의문을 제기할 수도 있다. 그냥 db에서 받은 형식 그대로 데이터를 다루며 타 계층에 넘겨주는 방법을 쓰면 굳이 dto를 따로 만들지 않아도 되기는 하다. dto가 사용되는 이유 몇가지가 있다.

 

  • entity의 노출을 막는다.
    db와 연결된 entity는 여러군데에서 접근이 가능하게 된다면 의도치 않은 수정이 발생하게 되고 이는 db데이터의 consistency에 문제를 초래한다.
    성능 상으로도,보안상으로도 함부로 연결되어서는 안되는 db의 데이터가 아무데에서나 쓰여서는 안된다.
  • multiple calls를 방지
    db에 접근할 때마다 성능에 쓰이는 자원이 사용된다. db로부터 한 번 가져온 이후에는 어플리케이션 레벨에 저장해 사용하면(dto로 다루면) 서버의 부하를 줄일 수 있다.
  • 여러 entity외의 정보도 혼합해 넘겨줄 수 있게 된다.
    entity뿐만 다른 데이터까지 결합하여 넘길 필요가 있는 경우, dto로 정의해 넘기는 것이 유리하다.

https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/

 

DTO의 사용 범위에 대하여

1. DTO란? DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)입니다. 간략하게 DTO의 구체적인 용례 및 필요성을 MVC 패턴을 통해 알아볼까요? 🚀 1.1. MVC 패턴 MVC…

tecoble.techcourse.co.kr

 DTO는 클라이언트 요청에 포함된 데이터를 담아 서버 측에 전달하고, 서버 측의 응답 데이터를 담아 클라이언트에 전달하는 계층간 전달자 역할을 합니다.