nul-problog

소프트웨어 아키텍처 - MVC 패턴과 3 - tier architecture 본문

소프트웨어공학

소프트웨어 아키텍처 - MVC 패턴과 3 - tier architecture

enjoy_nul 2024. 3. 7. 18:43

작년에,,, 어떤 분이 갑자기 밥먹다가 3 tier architecture에 대해 설명해 보라고 했을 때, 횡설수설 제대로 대답 못했던게 생각이 났다. ㅠㅠ

 

실제로 문제를 풀다가 MVC 패턴과 3 계층 아키텍처 문제에서 막히길래 정리하고 넘어가기로 ~.~

다신 틀리지말아요,,,

 

MVC 패턴 (모델 / 뷰 / 제어)

 - 동일 모델에 대하여 여러 가지 뷰가 상호 작용을 필요로 하는 시스템 구조

 - Model - View - Controller 의 약자

 - 하나의 애플리케이션, 프로젝트를 구성 할 때 그 구성요소를 세 가지의 역할로 구분한 패턴

   즉. 개발 할 때, 3가지 형태로 역할을 나누어 개발하는 방법론

 

이 MVC 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리 하여  애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션으로 제작 할 수 있다.

 

 

  • Model

    - 어플리케이션이 "무엇"을 할 것인지를 정의

       (처리되는 알고리즘 , DB와의 상호작용하여 비스니스 로직을 처리 , 데이터 등등..)

    - 데이터를 가진 객체를 모델이라고 지칭

        ( 이 데이터는 내부상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름, 속성으로 가질 수 있다. )  

    - 모델의 상태 변화가 있을 때 뷰에 통보하면 뷰는 최신의 결과를 보열 줄 수 있고, 컨트롤러에 통보하면 컨트롤러는

      모델 의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있다.

 

  • View

    - 화면에 "무엇"인가를 "보여주기 위한" 역할

    - 사용자가 직접 마주하는 사용자 인터페이스로, 주로 프론트엔드 쪽 기술들을 모아놓은 컨테이너

    - 사용자가 볼 결과물을 생성하기 위하여 모델로부터 정보를 불러옴

 

  • Controller

     - 모델이 "어떻게" 처리할 지를 알려주는 역할

     - 화면에서 사용자의 요청을 받아서 처리 되는 부분을 구현하게 되며 요청 내용을 분석해서 그 요청내용에 맞는

       데이터를 Model에 의뢰하고 View에 업데이트 하여 사용자에게 알려줌

 

    

MVC 패턴의 장점

  1. 비즈니스 로식과 UI 로직을 분리하여 유지보수를 독립적으로 시행가능
  2. Model 과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성과 유연성에 유리
  3. 중복 코딩의 문제점 제거

MVC 패턴의 단점

  1.  View는 Controller에 연결되어 화면을 구성하는 단위 요소 이므로 다수의 view를 가질 수 있음.
  2. Model은 Controller를 통해서 View와 연결되지만, Controller에 의해 하나의 View에 연결될 수 있는 Model도 여러개 이므로 View와 Moledl이 의존성을 띔

 

 - 21년 계리직 문제 (MVC 아케턱처 질문)

   사용자 인터페이스를 시스템의 비즈니스 로직 부분과 분리하는 구조

   결합도 (coupling)를 낮추기 위한 소프트웨어 아키텍처 패턴 구조

   디자인 패턴 중 옵서버(observer) 패턴에 해당하는 구조

 

3 tier architecture (3 계층 아키텍처)

 - 애플리케이션을 3 개의 논리적 및 물리적 컴퓨팅 계층으로 분리

 - 기존의 클라이언트 - 서버 애플리케이션을 위한 주요 소프트웨어 아키텍처를 뜻함

 - 아래 그림과 같이 프레젠테이션 계층과 사용자인터페이스, 데이터가 처리되는 애플리케이션 계층, 그리고 애플리케이션 과 연관된 데이터가 저장 및 관리되는 데이터 계층이 포함

 

 

  • 프레젠테이션 / 표현 계층 (Presentation Tier)

       - 사용자가 직접 마주하게 되는 계층.

       - 주로 사용자 인터페이스 지원하며, GUI 또는 Front-end 라고 부름

           > 그러므로 사용자 인터페이스와 관계 없는 데이터를 처리하는 로직은 포함하지 않음

       - HTML, Javascript, CSS, 사진 자료 등이 이 계층에 해당

 

 

  • 애플리케이션 계층(Application Tier)

       - 비즈니스 로직(Business Logic) 계층 또는 트랜잭션(Transaction) 계층이라고도 부름

       - 요청되는 정보를 어떠한 규칙을 바탕으로 처리하고 가공하는 것들을 담당

           > 즉, 동적인 데이터를 제공하는 것을 담당

      - 첫 번째 계층(프레젠테이션 계층) 또는 클라이언트 계층에서 애플리케이션 계층은 서버처럼 동작

         (첫 번째 계층이나 클라이언트 계층에서 요청한 데이터를 응답하는 역할)하고,

         데이터 계층이 볼 때는 클라이언트처럼 행동(어떠한 데이터를 데이터 계층에 요청)

          > 따라서 이 계층을 미들웨어(Middleware) 또는 Back-end 라고도 함

      -  PHP, Java 등이 이 계층에 해당

 

  • 데이터 계층 (Data Tier) 

       - 데이터베이스와 데이터베이스에 접근하여 데이터를 읽거나 쓰는 것을 관리

          > DBMS Database Management System) 가 이 계층에 해당

       - Mysql, MongoDB 등이 해당

      

3 tier architecture  장점

  1.  각 계층이 분리되어 있어 업무 분담이 가능하므로 업무 효율성 증가
  2. 여러 대의 서버로 나누어 각 계층이 동작하므로 서버의 부하 줄일 수 있음
  3. 합리적인 scale - up 가능

 

3 tier architecture  단점

  1.  1계층으로만 사용하는 것에 비해 관리가 더 필요
  2. 비용이 많이 발생
Comments