3 - Tier - Architecture란?
플랫폼을 3 계층으로 나누어 별도의 논리적/물리적 장치에 구축 및 운영하는 형태
다중 계층 아키텍처에서 가장 널리 사용되며 단일 프레젠테이션 계층, 로직 계층 및 데이터 계층으로 구성된다.
클라이언트 계층, 애플리케이션 계층, 데이터 계층으로 서버를 모두 물리적으로 나누어 운영하는 방식으로
각 계층에서 문제가 발생해도 서로 영향을 받지 않고 독립적으로 운영된다는 특징이 있다.
예로 들면 서버 한대에 한꺼번에 모든 기능들을 구축하는 것이 아니라 데이터를 저장하고 읽는 데이터 계층, 데이터를 처리하는 애플리케이션 계층, 그리고 데이터를 표현해 주는 클라이언트(프레젠테이션) 계층과 같이 각각 3 계층으로 나누어 각각의 기능으로 별도의 논리적/물리적인 장치에서 운영하는 방식이다.
계층 별 특징
프레젠테이션 계층 (Presentation Tier) #Client
사용자가 직접 마주하는 계층을 말한다. 주로 사용자 인터페이스(인터넷 브라우저 등)를 지원하며 이 계층은 GUI 또는 프론트엔드(front-end) 라고도 부른다. 그러므로 이 계층에서는 사용자 인터페이스와 관계없는 데이터를 처리하는 로직은 포함하지 않는다.
모든 HTTPS 지원 클라이언트 또는 장치와 통신할 수 있으므로 프레젠테이션 계층은 다양한 형식(데스크톱 어플리케이션, 모바일 앱, 웹페이지, IoT 장치 등)을 유연하게 수행 할 수 있다.
주로 웹 서버를 예시로 들 수 있고, React, HTML, Javascript, CSS 등이 이 계층에 해당 된다.
애플리케이션 계층 (Application Tier) #Server
이 계층에서는 프레젠테이션 계층에서 요청되는 정보를 어떠한 규칙을 바탕으로 처리하고 가공하는 것들을 담당한다. (동적인 데이터 제공) 비즈니스 로직 계층 또는 트랜잭션 계층 이라고도 한다.
첫 번째 계층에서 이 계층을 바라볼 때에는 서버처럼 동작하고(응답), 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.(요청)
따라서 이 계층은 미들웨어(Middleware) 또는 백엔드(back-end)라고도 불린다. 이 계층에서는 프레젠테이션코드 (예를 들면 HTML, CSS)나 데이터 관리를 위한 코드는 포함하지 않는다.
예) 어플리케이션 서버를 사용하고 어플리케이션에 대한 비즈니스 논리를 처리하는 계층(PHP, C#,Java,C++,Python,..)
데이터 계층 (Data Tier) #Database
데이터 계층은 DB 와 DB에 접근하여 데이터를 읽거나 쓰는 것을 관리하는 것을 포함한다.
주로 DBMS (Database Management System)이 이 계층에 해당된다. 데이터 계층 또한 백엔드(back-end)라고도 부른다. 주로 MySQL, MongoDB, Postgres 등이 이 계층에 해당된다.
예시
웹 어플리케이션을 사용하여 해당 지역에서 영화 시간을 찾고 있다고 가정하면
1) 프레젠테이션 계층에는 동영상을 보려는 날짜 등을 선택하는 웹 페이지 표시
2) 입력한 정보는 Application layer로 전달되고 조회 쿼리를 생성해서 Database layer로 전달
3) Database layer는 쿼리를 실행하고 결과를 Application layer 계층으로 리턴
4) Application layer는 결과를 웹 페이지에 구성
5) 페이지가 브라우저로 다시 전송되고 Presentation layer가 laptop 또는 타 장치에 페이지를 표시한다.
https://www.logianalytics.com/5-benefits-3-tier-architecture/
장점 / 단점
장점
- 각 계층이 분리되어 있어 업무 분담 가능, 업무 효율성 증가
- 여러 대의 서버로 나누어 각 계층이 동작하기 때문에 위험 부담을 줄일 수 있다.
- 서버의 부하를 줄여줄 수 있다.
- 부하가 발생하는 특정 계층을 스케일업(서버의 성능 업그레이드) or 스케일아웃 할 수 있다.
단점
1, 2 계층에 비해 작업을 여러 곳에서 처리하기 때문에 장애에 대응하여 신경 써야 할 부분이 더 많아진다.
- 관리 포인트 증가
- 비용 증가
추가
같이 보면 좋은 1-tier, 2-tier, N-tier architecture
1-Tier Architecture
https://www.perfmatrix.com/software-architecture-and-its-types/
단일 계층 아키텍처는 동일한 tier, 즉 클라이언트 tier에 프레젠테이션 layer, 비즈니스 layer 및 데이터 layer가 있다.
이름에서 알 수 있듯이 모든 계층과 구성요소를 동일한 시스템에서 사용할 수 있다.
예로는 MP3 플레이어, MS Office 등이 있다. 데이터를 저장하기 위해(데이터 계층의 기능으로) 로컬 시스템 또는 공유 드라이버를 사용한다.
2-Tier Architecture
https://www.perfmatrix.com/software-architecture-and-its-types/
클라이언트 tier에서 프레젠테이션 layer와 어플리케이션 layer를 모두 처리하고 서버는 데이터베이스 layer를 처리한다.
2계층 아키텍처는 '클라이언트-서버 어플리케이션'이라고도 한다.
2계층 아키텍처에서 통신은 클라이언트와 서버 간에 이루어지는데 클라이언트 시스템은 요청을 서버 시스템으로 전송하고 서버 시스템은 요청을 처리한 후 응답을 클라이언트 시스템으로 다시 보낸다.
3-Tier Architecture
https://www.perfmatrix.com/software-architecture-and-its-types/
세 개의 주요 층이 모두 분리되어 있다. 프레젠테이션layer는 클라이언트tier에 있고 어플리케이션 layer는 미들웨어 역할을 하며 비즈니스 Tier에 있다. 그리고 데이터layer는 데이터tier에서 사용 할 수 있다. 매우 일반적인 아키텍처이다~
N-Tier Architecture
https://www.perfmatrix.com/software-architecture-and-its-types/
분산 아키텍처 또는 다중 계층 아키텍처라고도 한다. 3-tier와 유사하지만 비즈니스 로직을 분산하기 위해 어플리케이션 서버의 수가 증가하여 개별 계층으로 표시된다.
'CS' 카테고리의 다른 글
2. 자료구조 (0) | 2023.01.30 |
---|---|
1. 프로그래밍 공통 (0) | 2023.01.30 |
컴파일러(compiler), 인터프리터(interpreter) 차이 (0) | 2022.12.29 |
Hardware, Middleware, Software 차이 (0) | 2022.12.15 |
[CS] OSI 7계층이란? (0) | 2022.11.19 |
댓글