3 Tier Architecture : MVC vs 3 Tier

twkwon0417·2023년 10월 29일
0

Back-End

목록 보기
1/2
post-thumbnail

Introduction

MVC pattern을 공부하다가 serive layer을 추가 할수 있니 뭐니 하는데 MVC에서 Service Layer가 무슨 역할인지? Presentation Layer에 MVC가 쓰인다는데? 정확히 MVC Pattern이 무엇인지 알아보려다 여기까지 와 버렸다.

  • 목차는 이렇다
    1. 읽기 전 필독!
    2. 계층이란 무엇인가?
    3. 애플리케이션이 어떻게 계층으로 나누어지는 가?
    4. 3 Tier Architecture의 규칙
    5. 3 Tier Architecture이 주는 이점
    6. MVC vs 3 Tier Architecture
    7. 잡담

0. 읽기 전 필독!

용어 정리
Layer == Tier == 계층

각 Layer의 이름이 여러 이름으로 불리는데 만약, 같은 3 Tier 아키텍쳐라면 다른 무언가가 아니라 같은 개념을 설명하는 용어일 것입니다.
eg) Business layer은 사람마다 Domain Layer, Business Logic layer 등등 여러 이름으로 불립니다.

1. 계층이란 무엇인가?

계층 : 비슷한 상황에서 재사용할수 있는 컴포넌트들을 모아놓은 그룹

계층의 특징

  • 각 계층들은 각자 구성될수 있어야 한다. (어떤 사람이나 팀이 각자 특정 계층을 개발하는 것 처럼)
  • 각 계층들은 "무언가"를 만들기 위해 조립될수 있어야 한다.
  • 각 계층들은 "무언가"에게 기여할수 있어야 하며 그 기여들은 각각의 계층마다 달라야 한다.
  • 각 계층들 간에는 경계선이 있어야 한다. (각 계층별로 정확히 구분 할수 있어야 하기 때문)
  • 각 계층들은 협력하여야만 실행되여야 하고 독립적으로 실행 될 수 없어야 한다.
  • 각 계층들은 그 계층과 비슷한 역활을 하는 요소로 교체된다하더하도 애플리케이션은 계속 실행될수 있어야 한다.

2. 애플리케이션이 어떻게 계층으로 나누면 좋을까?


이렇게 한 뭉텅이로 applicatoin이 작동한다 하면

  • 애플리케이션은 HTML document를 주고 받으며 Web browser과 소통하는데 이러한 코드들을 비지니스 로직으로 부터 분리하면 좋을 것이다.
  • 애플리케이션이 데이터베이스와 SQL문을 주고 받으며 소통하는데, 이런 코드들을 비지니스 로직으로 부터 분리하면 좋을 것이다.

이렇게 코드를 분리 하면 다음과 같은 3개의 계층으로 된 3 Tier Architecture가 나온다.

3. 3 Tier Architecture : 규칙

  • 각 계층의 코드들은 개별적으로 관리될 수 있게 분리된 파일에 있어야 한다.
  • 각 계층은 자기 계층에 맞는 코드만 있어야 한다.
  • Presentation Layer은 외부(user)로 부터 요청을 받거나 보낼수 있다.
  • Presentation Layer은 business layer에게 요청을 주거나 답을 받을수 있다. (vice versa)
  • Business Layer은 Data Access layer 에게 요청을 주거나 답을 받을수 있다. (vice versa)
  • 각 레이어들은 다른 레이어의 내부를 알고 있으면 안된다. (그러면 의존성이 생기게 된다.)

4. 3 Tier Architecture가 주는 이점

  • 유연성 : 3가지 로직으로 분히 되어있어 변화에 유연하게 대처할수 있다.
  • 유지보수 : 한 계층의 요소를 변경해도 다른 계층엔 영향을 미치지 않아 유지보수가 쉬워 진다.
  • 재사용성 : 재사용 할수 있는 구성요소의 구현이 쉬워진다. (eg. Business Layer에 있는 한 요소가 여러 Presentation Layer 요소에서 사용 될수 있다.)
  • 확장성 : 여러 서버에 애플리캐이션의 요소들을 배분할수 있도록 하여 확장성이 커진다.

5. MVC vs 3 Tier Architecture

  • MVC와 3 Tier 비교
  • MVC + 3 Tier Architecture

MVC는 디자인 패턴으로써 컴포넌트(모듈)이 어떻게 설계되는지에 대한 특정 솔루션이고

Architecture은 소프트웨어의 전반적인 구조에 대한 것 입니다. 따라서 개발자들은 아키텍쳐의 세부사항과 요구사항에 맞춰 디자인 패턴을 선택하고 또한 아키텍쳐가 컴포넌트의 세분화를 결정짓습니다.

3 Tier은 애플리케이션 전체에 대한 솔루션이고 MVC 패턴은 특정 컴포넌트에 대한 솔루션이다. 두 방법을 사용함으로 써 비슷한 장점을 가져온다는 것 뿐, MVC와 3 Tier Architecture을 비교하는 거 자체가 말이 안되지 않을까?

6. 잡담

MVC Pattern은 1979년 소개되었고, 3 Tier Architecture도 1997년 Applying UML and Patterns에서 소개었고 Web이 아닌 Desktop Application을 위해 고안된 것이다. 또한 사람들마다 각 계층을 다른 이름들로 부르니 많이 헷갈린만한것 같다. 부족한 글이지만 이 글을 통해 어느 정도 길라잡이가 됬으면 좋겠다.

참고한 글

참고 할만한 글

profile
맨 땅에 헤딩

0개의 댓글