티스토리 뷰

develop

3 계층 architecture

yogae 2021. 10. 29. 07:15

3 계층 architecture란?

어떤 플랫폼을 3계층으로 나누어 별도의 놀리적 물리적인 장치에 구축 및 운영하는 형태를 말한다.

계층과 레이어

레이어와 계층이 혼동되어 사용될 때가 있다. 레이어는 소프트웨어의 기능적 분할을 의미하지만, 계층은 이프라에서 실행되는 소프트웨어의 기능적 분할을 의미한다.

계층을 분리하여 사용하는 목적

각 계층을 담당하는 팀들을 구성하여 업무 분담이 가능해지므로 업무 효율성이 증가할 수 있다. 여러 대의 서버로 나누어 각 계층이 동작하므로 서버의 부하를 줄여줄 수 있다. 부하가 발생하는 특정 계층의 서버에 대해서만 스케일업을 고려할 수 있다.

3 계층 구조 구성

 

프레젠터이션 계층

정보를 표시하고 사용자로부터 정보를 수집한다. 애플리케이션의 사용자 인터페이스를 지원한다. 주로 웹 서버를 뜻한다.

애플리케이션 계층

논리 계층 또는 중간 계층이라고도 하는 애플리케이션 계층은 애플리케이션의 핵심이다. 이 계층에서는 프리젠테이션 계층에서 수집된 정보를 처리한다. 데이터 계층의 데이터를 추가, 삭제 또는 수정할 수도 있다.

데이터 계층

데이터 액세스 계층 또는 백엔드라고도 불리는 데이터 계층은 애플리케이션이 처리하는 정보가 저장 및 관리되는 곳이다. 주로 DBMS(Database Management System)이 이 계층에 해당한다. Python, Ruby 또는 PHP를 사용하여 개발되며, 예를 들어 e Django, Rails, Symphony 또는 ASP.NET 등의 프레임워크를 실행합니다.

Web server vs WAS(Web Application Server)

Web server

클라이언트의 request가 오면 요청에 대한 처리를 담당하며 정적문서를 요청하는 경우 요청에 응답한다. 정적 컨텐트가 아닐 경우 WAS로 처리를 위임하여 WAS에서 반환된 값을 응답한다.

WAS

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 서버이다. HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.

Web server와 WAS 를 분리하는 이유

WAS는 DB 조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web server에서 빠르게 클라이언트에 제공하여 서버 부하를 방지한다. 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려진다. 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성 을 위해 Web Server와 WAS를 분리한다.

'develop' 카테고리의 다른 글

python 절대경로 / 상대경로  (0) 2022.01.04
DAS / NAS / SAN  (0) 2021.10.29
AWS KMS  (0) 2021.10.17
node.js multi processing, threading  (0) 2021.04.02
VPC AWS ElasticSearch Service로 Cognito 인증 접근  (0) 2021.02.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함