MVC 는 Model, View, Controller의 약자 입니다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴입니다. MVC패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 애플리케이션의 구성 요소를 분리하여 유지보수성, 확장성, 코드 재사용성을 향상시키는 데 도움을 줍니다. 주로 웹 및 데스크톱 애플리케이션을 개발하는 데 적용되며, 사용자 인터페이스를 관리하는 데 특히 효과적입니다.
Node.js는 자유도가 매우 높기 때문에, Controller나 Service가 따로 분리되어 있지 않습니다. 이에 MVC 패턴을 적용하여 서비스의 구성 요소를 분리하고 확장성을 높였습니다.
우리의 서비스는 클라이언트에서 온 정보를 validator
로 검사하여 controller
로 보냅니다.
controller
는 다시 service
로 해당 정보를 보내고, service는 요청에 맞게 Database
에서 정보를 조회하거나 저장합니다.
데이터베이스에서 온 정보는 controller
가 알 필요가 없는 불필요한 정보를 converter
를 통해 제거하고
다시 controller
는 responseDto
로 감싸서 클라이언트에게 필요한 정보만을 보내줍니다.
일단 제가 프로젝트를 진행하며 MVC패턴을 사용한 결과 느낄 수 있는 이점이 몇가지 있었습니다.
로직이 깔끔해진다
예전에 Controller에 모든 코드를 집어 넣는 방식보다 Controller와 Service를 분리하여 사용하니 코드 가독성은 물론 특정 부분만을 수정하기 훨씬 편해졌습니다.
코드 재사용성이 늘어난다
이건 1번과도 이어지는 내용인데, 서비스에서 겹치는 부분 예를 들면 유저 조회 같은 함수를 만들어 두면 어느곳에서나 가져다 쓸 수 있어 재사용성이 늘어나고, 이 또한 유저 조회를 수정할때 한 부분만 수정하면 되어서 편리해졌습니다.
확장성이 늘어났다
프로젝트를 진행하며 역 정규화를 위해 특정 모델에 특정 column를 추가하거나, front 개발자들의 요청에 의해 응답값에 특정 데이터를 추가할 일이 많았습니다. 이때 converter나 Dto의 특정 부분만 수정하면 되었기 때문에 해당 모델을 사용하는 전체 서비스를 수정하지 않고 손쉽게 응답 객체를 수정할 수 있게 되었습니다.