World of Dev/프로그래밍 개념 & 설계

MVC 패턴

Funold 2024. 1. 8. 09:28

MVC 패턴의 탄생 배경

MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나입니다.

소프트웨어 개발 분야에서 초기 단계인 1960년대와 1970년대엔 사용자 인터페이스와 비즈니스 로직이 서로 긴밀하게 결합되어 있어서, 소프트웨어의 구조가 비교적 단순하고 모듈화되지 않았습니다. 이로 인해 코드의 가독성이 낮고 확장하기 어렵고 또 유지보수가 어렵다는 문제가 발생했습니다.

이러한 문제에 대한 해결책으로 1970년대에 처음 소개된게 바로 MVC패턴입니다.

 

MVC 패턴은 각 역할에 따라 모델(Model), 뷰(View), 컨트롤러(Controller)로 구분하여 각각의 역할을 분리함으로써 소프트웨어를 더 모듈화하고 유연하게 만들었습니다. 이렇게 구조화된 MVC 패턴은 코드의 재사용성을 높이고, 유지보수가 쉬워지는 장점이 있어 많은 소프트웨어 개발에서 사용되고 있어요.

 

Model, View, Controller 의 세부적인 역할과 기능

  1. Model (모델):
    • 데이터와 비즈니스 로직을 담당합니다.
    • 데이터의 상태를 관리하고, 데이터 변경 시 다른 구성 요소에 알립니다.
    • 데이터베이스와의 상호 작용도 이곳에서 처리합니다.
  2. View (뷰):
    • 사용자 인터페이스를 담당합니다.
    • 모델의 데이터를 시각적으로 표현하고, 사용자 입력을 받아 컨트롤러에 전달합니다.
    • 사용자에게 정보를 표시하거나 입력을 받는 등의 역할을 합니다.
  3. Controller (컨트롤러):
    • 사용자 입력을 받아 모델 또는 뷰에 명령을 전달합니다.
    • 모델과 뷰 간의 통신을 조정하여 애플리케이션의 흐름을 제어합니다.
    • 비즈니스 로직의 업데이트와 뷰의 업데이트를 관리합니다.

동작의 흐름:

  1. 사용자는 뷰에서 입력을 하게 되면, 해당 입력은 컨트롤러로 전달됩니다.
  2. 컨트롤러는 이 입력을 기반으로 모델을 업데이트하거나, 모델로부터 정보를 가져와 뷰를 업데이트합니다.
  3. 사용자에게 업데이트된 정보가 표시되는 것이 바로 뷰의 역할이에요.


이러한 이유로 MVC 패턴은 소프트웨어를 구조화하고 유지보수하기 쉽게 만들어주며, 각 구성 요소가 독립적으로 동작하여 유연성을 제공합니다.

 

MVC 패턴의 장단점

장점:

  1. 유지보수 용이성: 각 구성 요소가 분리돼 있어 변경이나 업그레이드가 쉽습니다.
  2. 재사용성: 모델이나 뷰를 다른 프로젝트에서 재사용할 수 있어요.
  3. 유연성: 각 부분이 독립적으로 동작하기 때문에 유연성이 높습니다.
  4. 개발 속도 향상: 동시에 다양한 개발자들이 모델, 뷰, 컨트롤러를 개발할 수 있어 효율적인 협업이 가능합니다.

단점:

  1. 복잡성: 작은 규모의 애플리케이션에는 지나치게 복잡할 수 있습니다.
  2. 학습 곡선: 처음에는 MVC 패턴의 개념을 이해하기 어려울 수 있습니다.
  3. 네트워크 지연: 모델, 뷰, 컨트롤러가 분리돼 있어 데이터 통신이 늘어날 수 있습니다.
  4. 오버헤드: 각 부분이 독립적으로 동작하므로 작은 규모의 애플리케이션에서는 오버헤드가 발생할 수 있습니다.

MVC 패턴은 구조화와 유지보수 측면에서 매우 효과적이지만, 프로젝트의 특성에 따라서는 다른 아키텍처 패턴을 고려해야 할 수 있어요!

 

이외의 아키텍처 패턴들

MVC 패턴은 소프트웨어 디자인에서 많이 사용되는 아키텍처 패턴 중 하나인데, 이 외에도

  • MVVM (Model-View-ViewModel)
  • MVP (Model-View-Presenter)
  • PAC (Presentation-Abstraction-Control)
  • Layered Architecture (계층형 아키텍처)
  • Event-Driven Architecture (이벤트 주도 아키텍처)

..와 같이 여러 패턴들이 있으며, 특정 상황과 요구사항에 따라 적합하게 사용 됩니다. 그렇게 선택된 아키텍처 패턴은 프로젝트의 성격, 규모, 팀의 역량 등 다양한 요소를 고려해 결정됩니다.