소프트웨어 개발은 복잡할 수 있습니다.

개인 프로젝트를 개발할 때는 크게 신경 쓸 필요가 없을 수도 있지만, 실제 운영 환경에서 사용하는 소프트웨어는 다릅니다.

여러 구성 요소가 필요할 수 있으며, 이러한 구성 요소들을 제대로 처리하지 못하면 혼란이 초래될 수 있습니다.

하지만 꼭 이렇게 복잡할 필요는 없습니다. 이 글에서는 아키텍처 패턴(Architecture Pattern) 중에서도, 하나의 애플리케이션을 3개의 역할로 나누어 관리하는 대표적인 패턴들을 살펴봅니다.


아키텍처 패턴이란?

소프트웨어 설계에서 아키텍처 패턴에 대해 이야기할 때 가장 먼저 떠오르는 것들은 Client–Server, Layered Architecture, Monolithic, Microkernel, Event-driven 아키텍처 등입니다. 이러한 패턴들은 여러 애플리케이션, 서비스, 서버 등을 포함한 전체 시스템 아키텍처와 관련이 있습니다.

반면 MVP, MVC, MVVM은 데이터, 사용자 인터페이스, 로직을 분리하여 단일 애플리케이션 내의 코드를 체계적으로 구성하는 데 중점을 둡니다. 이러한 패턴들은 전체 시스템에 초점을 맞춘 아키텍처 패턴의 하위 집합입니다.

Client-Server Architecture vs MVC


MVC, MVP, 그리고 MVVM

블로그의 가독성을 유지하고 분량 제한을 넘지 않기 위해, 단일 애플리케이션 내 코드 구성을 위한 아키텍처 패턴, 즉 다음과 같은 패턴에만 집중하겠습니다.

  1. Model-View-Controller
  2. Model-View-Presenter
  3. Model-View-ViewModel

세 가지 패턴에는 공통적으로 등장하는 두 가지 요소가 있습니다. 먼저 이 두 개념부터 확실히 이해해 봅시다.

모델