MVC pattern을 공부하다가 serive layer을 추가 할수 있니 뭐니 하는데 MVC에서 Service Layer가 무슨 역할인지? Presentation Layer에 MVC가 쓰인다는데? 정확히 MVC Pattern이 무엇인지 알아보려다 여기까지 와 버렸다.
- 읽기 전 필독!
- 계층이란 무엇인가?
- 애플리케이션이 어떻게 계층으로 나누어지는 가?
- 3 Tier Architecture의 규칙
- 3 Tier Architecture이 주는 이점
- MVC vs 3 Tier Architecture
- 잡담
용어 정리
Layer == Tier == 계층
각 Layer의 이름이 여러 이름으로 불리는데 만약, 같은 3 Tier 아키텍쳐라면 다른 무언가가 아니라 같은 개념을 설명하는 용어일 것입니다.
eg) Business layer은 사람마다 Domain Layer, Business Logic layer 등등 여러 이름으로 불립니다.
계층 : 비슷한 상황에서 재사용할수 있는 컴포넌트들을 모아놓은 그룹
계층의 특징
- 각 계층들은 각자 구성될수 있어야 한다. (어떤 사람이나 팀이 각자 특정 계층을 개발하는 것 처럼)
- 각 계층들은 "무언가"를 만들기 위해 조립될수 있어야 한다.
- 각 계층들은 "무언가"에게 기여할수 있어야 하며 그 기여들은 각각의 계층마다 달라야 한다.
- 각 계층들 간에는 경계선이 있어야 한다. (각 계층별로 정확히 구분 할수 있어야 하기 때문)
- 각 계층들은 협력하여야만 실행되여야 하고 독립적으로 실행 될 수 없어야 한다.
- 각 계층들은 그 계층과 비슷한 역활을 하는 요소로 교체된다하더하도 애플리케이션은 계속 실행될수 있어야 한다.
이렇게 한 뭉텅이로 applicatoin이 작동한다 하면
이렇게 코드를 분리 하면 다음과 같은 3개의 계층으로 된 3 Tier Architecture가 나온다.
MVC는 디자인 패턴으로써 컴포넌트(모듈)이 어떻게 설계되는지에 대한 특정 솔루션이고
Architecture은 소프트웨어의 전반적인 구조에 대한 것 입니다. 따라서 개발자들은 아키텍쳐의 세부사항과 요구사항에 맞춰 디자인 패턴을 선택하고 또한 아키텍쳐가 컴포넌트의 세분화를 결정짓습니다.
3 Tier은 애플리케이션 전체에 대한 솔루션이고 MVC 패턴은 특정 컴포넌트에 대한 솔루션이다. 두 방법을 사용함으로 써 비슷한 장점을 가져온다는 것 뿐, MVC와 3 Tier Architecture을 비교하는 거 자체가 말이 안되지 않을까?
MVC Pattern은 1979년 소개되었고, 3 Tier Architecture도 1997년 Applying UML and Patterns에서 소개었고 Web이 아닌 Desktop Application을 위해 고안된 것이다. 또한 사람들마다 각 계층을 다른 이름들로 부르니 많이 헷갈린만한것 같다. 부족한 글이지만 이 글을 통해 어느 정도 길라잡이가 됬으면 좋겠다.