MVC 패턴은 애플리케이션을 Model (모델), View (뷰), Controller (컨트롤러)라는 세 가지 부분으로 나눠 관리하는 아키텍처 패턴입니다. 애플리케이션의 비즈니스 로직, 사용자 인터페이스, 그리고 데이터 관리를 각각 분리해서, 코드가 복잡해지더라도 기능을 손쉽게 관리할 수 있도록 돕습니다.
간단한 예시로는 레스토랑을 들면 이해하기가 쉽습니다.
Model (모델): 주방장 - 실제 음식을 만드는 사람
View (뷰): 음식이 담긴 접시 - 손님이 실제로 보는 것
Controller (컨트롤러): 웨이터 - 주문을 받고 주방과 손님 사이를 연결
Model은 애플리케이션의 데이터와 비즈니스 로직 을 담당합니다. 데이터베이스와의 연결, 데이터 조회, 수정, 삭제와 같은 작업이 여기에서 이뤄집니다. Model은 View나 Controller에 대해 전혀 알지 못하며, 데이터와 관련된 모든 로직을 책임집니다.
예를 들어, 사용자의 정보를 가져오고 저장하는 기능은 Model이 담당합니다. Spring에서는 Service와 Repository 계층을 Model에 포함시켜 비즈니스 로직과 데이터 접근 로직을 처리합니다.
View는 사용자에게 화면에 보이는 부분 을 담당합니다. Model에서 가져온 데이터를 시각적으로 표현하며, 사용자가 볼 수 있는 UI 요소를 의미합니다. HTML, CSS, JavaScript 등이 여기에 해당합니다.
Spring에서는 Thymeleaf, JSP, 또는 프론트엔드 템플릿 엔진을 사용해 View를 작성하며, Controller에서 전달받은 데이터 를 이용해 최종 화면을 사용자에게 보여줍니다.
Controller는 사용자의 요청을 받아 처리하고, 그 결과를 View에 전달 하는 역할을 합니다. 즉, 사용자의 요청을 Model과 View 사이에서 연결해주는 중간 관리자 역할을 하는 거죠.
사용자가 특정 URL로 요청을 보내면, Controller가 이 요청을 받아 Model을 통해 데이터를 가져오거나 업데이트한 후, View에 데이터를 넘겨 화면을 렌더링합니다. Spring에서는 @Controller 또는 @RestController 어노테이션을 사용하여 Controller를 구현합니다.
Controller 가 해당 요청을 받습니다.Model 에서 조회하거나 조작하여 준비합니다.View 에 전달합니다.이렇게 각각의 역할이 명확하게 분리되기 때문에, 유지보수가 쉬워지고 기능 확장도 용이해집니다.
MVC 패턴은 애플리케이션을 구조적으로 관리하는 데 큰 도움이 되는 패턴입니다. 특히 Spring과 같은 프레임워크에서 MVC 패턴을 쉽게 적용할 수 있으므로, 애플리케이션을 개발할 때 많이 활용되는 패턴임을 알게 되었습니다. Spring에서 MVC 패턴을 활용해 프로젝트를 만들어보면서 이 구조를 익혔습니다.