Model-View-Controller의 약자로, 소프트웨어 아키텍처의 한 형태로 UI와 비즈니스 로직을 분리하여 유지보수성과 재사용성을 높이는 데 중점을 둔 구조. 웹 애플리케이션과 데스크톱 애플리케이션을 포함한 다양한 소프트웨어(Spring, ASP.NET, Django 등 여러 프레임워크) 개발에서 널리 사용됨
1. MVC 패턴 구성 요소
1) Model
Model은 데이터와 비즈니스 로직을 담당하는 부분으로 애플리케이션의 핵심 데이터를 관리하고 데이터베이스와 상호작용하며, View나 Controller와는 독립적으로 작동하도록 설계됨
데이터베이스나 외부 API와 연결해 데이터를 CRUD(생성, 읽기, 업데이트, 삭제)하며, 상태가 변하면 그 내용을 View에 알리는 역할도 함
2) View
View는 사용자에게 화면에 표시되는 인터페이스
Model에서 제공하는 데이터를 시각적으로 표현하는 역할을 하며, Controller가 제공하는 명령에 따라 특정 데이터를 화면에 보여줌
View는 Model과 직접 통신하지 않고, Controller를 통해 데이터를 주고받음으로써 관심사 분리를 유지함
3) Controller
Controller는 사용자 입력을 받고, 이를 해석하여 적절한 Model과 View를 갱신하는 역할
사용자의 요청을 받아 Model을 업데이트하고, 변경된 Model 데이터를 기반으로 View를 업데이트하도록 지시함
ex) 사용자가 버튼을 클릭하면 Controller가 해당 요청을 받고, 필요한 데이터를 Model에서 가져와 View에 전달하는 식으로 동작
2. MVC 패턴 동작 과정
1) 사용자 입력 (Controller) : 사용자가 애플리케이션에 특정 동작을 수행하도록 명령
2) 로직 처리 및 데이터 변경 (Model) : Controller는 사용자 입력을 바탕으로 Model에 데이터를 요청하거나 업데이트
3) 데이터 반영 및 View 업데이트 (View) : Model이 데이터를 업데이트하고 나면, 변경된 데이터를 View에 전달하여 사용자에게 최신 정보를 시각적으로 보여줌
3. MVC 패턴 장단점
1) 장점
관심사의 분리: UI와 비즈니스 로직을 분리하여 개발이 용이하며, 코드의 가독성과 유지보수성이 높음
유연한 테스트 및 확장성: View와 Model이 독립적으로 동작하기 때문에 단위 테스트와 기능 확장이 쉬움
협업 효율성: UI 개발자와 백엔드 개발자가 서로의 영향을 최소화하면서 협업할 수 있음
2) 단점
복잡성 증가: 간단한 애플리케이션에서는 MVC 패턴이 오히려 복잡성을 증가시킬 수 있음
기본 구조의 부담: 작은 프로젝트에서는 모든 요소를 엄격히 분리해야 하는 부담으로 인해 오히려 비효율적일 수 있음