
MVC패턴이란 무엇일까?
사전지식
- 국비지원교육을 받을 때, 그리고 새싹 수업을 진행할 때 항상 꼭 알아두어야 할 개념으로 mvc패턴이 이야기되곤했다
- mvc패턴은 model, view, controller의 구조로 서비스를 설계하고, 코드를 작성하는 디자인 패턴을 의미한다
- 실제로 프로젝트를 진행할 때는 해당 이름으로 폴더를 만들어서 파일구조를 분류했었다
- mvc패턴은 어떤 장점이 있기에 많이 사용되는 것일까? 또, mvc패턴은 구체적으로 어떻게 동작하는 것일까?
Model, View, Controller

- model: 데이터, 데이터 베이스, 데이터를 저장하고 가공하는 요소를 의미한다
- view: 사용자에게 보여지는 화면, 사용자에게 데이터를 입력받거나 데이터를 출력하는 UI의 역할을 하는 요소이다
- controller: model과 view를 연결하여 사용자 입력을 처리하거나 요청 결과를 view로 보내주는 역할을 한다
- 흐름: 사용자가 view를 통해 controller에 요청을 전달하면 controller는 해당 요청을 적절히 처리하여 model로 전송한다 model은 요청에 대한 응답 데이터를 다시 controller로 전송하고, controller가 view에 전송한 데이터를 사용자가 보게된다
왜 사용할까?
- 화면, 데이터, 둘 사이를 조율하는 컨트롤러로 역할을 구분하여 유지보수가 용이하고, 테스트가 편리하다
- 협업이 편리하고, 코드의 재사용성, 확장성을 높일 수 있다
mvc 프로젝트의 구조
- 팀프로젝트의 파일 구조를 살펴보면 mvc를 더 잘 이해할 수 있을 것 같다, 실제로 모든 파일이 model, view, controller 3가지 폴더로 구분되는 것은 절대아니다. router도 있고, config도 있고..
- 우리팀의 backend폴더 구조는 아래와 같았다

- model폴더에는 sequelize를 통해 설정한 각 테이블들이 저장되어 있었고 실제 데이터는 aws의 rds를 사용하여 저장해두었다
- controller폴더에는 model 객체를 가져와서 데이터 관련 처리를 요청하는 함수가 작성되었다
- view는 frontend폴더에서 처리되었다

- page는 화면에 실제 보여지는 webpage, 페이지에서 재사용되거나 페이지의 일부가 되는 부분은 component를 통해 다른 폴더로 구분하여 구성하였다
참고자료