일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 금융IT #코스콤 #금융보안원 #금융경제연구소
- 5G #5G단점 #5G 4G
- 배달의 명수 #배달의 민족
- BCG # 불주사 # 코로나 불주사
- 코로나19 #복수 여권 #교통비할인
- 오거돈 #부산시장 #오거돈시장 성추행 #오거돈 사퇴
- 텔레그램 #가해자처벌 #청원동의 #n번방 #박사방
- Today
- Total
nul-problog
소프트웨어 아키텍처 - MVC 패턴과 3 - tier architecture 본문
작년에,,, 어떤 분이 갑자기 밥먹다가 3 tier architecture에 대해 설명해 보라고 했을 때, 횡설수설 제대로 대답 못했던게 생각이 났다. ㅠㅠ
실제로 문제를 풀다가 MVC 패턴과 3 계층 아키텍처 문제에서 막히길래 정리하고 넘어가기로 ~.~
다신 틀리지말아요,,,
MVC 패턴 (모델 / 뷰 / 제어)
- 동일 모델에 대하여 여러 가지 뷰가 상호 작용을 필요로 하는 시스템 구조
- Model - View - Controller 의 약자
- 하나의 애플리케이션, 프로젝트를 구성 할 때 그 구성요소를 세 가지의 역할로 구분한 패턴
즉. 개발 할 때, 3가지 형태로 역할을 나누어 개발하는 방법론
이 MVC 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리 하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션으로 제작 할 수 있다.
- Model
- 어플리케이션이 "무엇"을 할 것인지를 정의
(처리되는 알고리즘 , DB와의 상호작용하여 비스니스 로직을 처리 , 데이터 등등..)
- 데이터를 가진 객체를 모델이라고 지칭
( 이 데이터는 내부상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름, 속성으로 가질 수 있다. )
- 모델의 상태 변화가 있을 때 뷰에 통보하면 뷰는 최신의 결과를 보열 줄 수 있고, 컨트롤러에 통보하면 컨트롤러는
모델 의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있다.
- View
- 화면에 "무엇"인가를 "보여주기 위한" 역할
- 사용자가 직접 마주하는 사용자 인터페이스로, 주로 프론트엔드 쪽 기술들을 모아놓은 컨테이너
- 사용자가 볼 결과물을 생성하기 위하여 모델로부터 정보를 불러옴
- Controller
- 모델이 "어떻게" 처리할 지를 알려주는 역할
- 화면에서 사용자의 요청을 받아서 처리 되는 부분을 구현하게 되며 요청 내용을 분석해서 그 요청내용에 맞는
데이터를 Model에 의뢰하고 View에 업데이트 하여 사용자에게 알려줌
MVC 패턴의 장점
- 비즈니스 로식과 UI 로직을 분리하여 유지보수를 독립적으로 시행가능
- Model 과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성과 유연성에 유리
- 중복 코딩의 문제점 제거
MVC 패턴의 단점
- View는 Controller에 연결되어 화면을 구성하는 단위 요소 이므로 다수의 view를 가질 수 있음.
- 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 장점
- 각 계층이 분리되어 있어 업무 분담이 가능하므로 업무 효율성 증가
- 여러 대의 서버로 나누어 각 계층이 동작하므로 서버의 부하 줄일 수 있음
- 합리적인 scale - up 가능
3 tier architecture 단점
- 1계층으로만 사용하는 것에 비해 관리가 더 필요
- 비용이 많이 발생