2-tier와 3-tier
웹 아키텍처에서 3-tier가 등장하기 전에는 대부분 2-tier 구조가 활용되었다.
1) 2-tier
- Client - Server
- 2-tier란 ec2와 같은 웹서버가 DB에 연결되는 형태를 말한다.
(DB가 없이 웹 서버만 있다면 프론트엔드 개발만 가능하지만 DB가 있으면 백엔드도 사용이 가능해진다. 프론트엔드에 존재하는 데이터는 서버 문제로 쉽게 손실될 수 있으나 백엔드에 있는 데이터는 반영구적이며, 개인정보보호차원, 데이터활용차원에서 적합하다.)
- 2-tier 구조는 트래픽이 많지 않은 경우 자주 사용되는 구조이다
- 2-tier 기반의 클라이언트/서버 환경은 애플리케이션 개발의 가장 일반적인 방법으로 하나의 클라이언트에 서버 프로세스가 하나씩 생성되는 방식이다.
- 클라이어트가 직접 서버의 DB에 접속하여 자원을 활용한다. 편리하지만 보안에 취약하고, 유지보수가 어렵다.
2) 3-tier
- Web Server- Application Server - DataBase Server
- 3-tier란 ec2와 같은 웹서버와 DB를 논리적으로(혹은 물리적으로) 분리한 형태를 말한다.
- 3-tier 구조는 DB의 접속을 서버를 통해서만 가능하도록 구성한다.
- Web Server
: 보통 사용자(클라이언트)가 보려고하는 GUI, 인터페이스, 웹 화면을 제공해주는 서버이다.
우리가 흔히 사용하는 HTTP 통신을 통하여 인터넷을 사용할 때 우리가 보는 브라우저 화면 및 기능 요소들을 보여주는 계층
실무에서는 보통 웹 서버라고 한다.
- Application Server
: 인터넷에서 우리는 단순히 화면이나 인터페이스를 보는 것 이외에 상품 주문, 결제, 검색 등의 다양한 기능을 사용한다.
Application Server은 이러한 기능들을 실질적으로 처리하는 계층
실무에서는 보통 WAS(Web Application Server) 서버라고 한다.
(* Application은 무엇을 연산하고 처리하는 의미로 받아들이면 된다.)
- DataBase Server
: Application Server에서 사용자의 요청을 처리할 때, 데이터 기입이나 변경 등 작업을 지원하고 사용자들의 데이터들을 보관하는 계층
흔히 Application Server에서 DB Server를 통해 데이터를 활용할 시, 질의문(쿼리)을 통하여 필요한 데이터를 확인하는데, 이 때 DB에서 사용되는 질의문을 SQL이라고 한다.
실무에서는 DB 서버라고 한다.
- Client: 사용자의 PC, 웹 브라우저이다.
- Web Server: Client의 요청과 접속관리를 주관한다.
- WAS: 실질적인 애플리케이션 실행(비즈니스로직과 DB접근)을 주관한다.
- DB: 데이터베이스, 데이터가 저장된 공간
Application Layer에서 웹 서버(Web Server)와 WAS를 구분한 것이 핵심이다.
Web Server가 Client의 요청과 접속관리를 주관하고, WAS가 웹 애플리케이션 실행을 주관한다.
이렇게 클라이언트의 접속관리와 앱 실행을 분리함으로써 여러 클라이언트가 접근해도 비즈니스 로직 처리를 쓰레드로 할 수 있다.
위 그림의 flow를 간략히 정리하면 다음과 같다.
① 클라이언트의 웹 브라우저가 HTTP Request를 한다.
② 웹 서버는 WAS에 웹 애플리케이션 실행을 위임한다.
③ WAS는 해당하는 로직을 수행하다가 DB접근이 필요하면 SQL 질의를 한다.
④ 질의에 따른 응답을 보낸다.
⑤ 실행 결과를 반환한다.
⑥ WAS로 부터 받은 결과를 웹 브라우저에 HTTP로 송신한다
3) 2-tier vs 3-tier
- 서버의 역할을 나누어서 분리하면 같은 역할을 하는 서버들을 같은 tier에 있다고 말한다.
- tier가 늘어날수록 서버를 여러가지 분류로 나눈다는 뜻으로, 서버가 총 2대이든 20대이든 서버의 역할이 web서버, db서버 두가지이면 2-tier구조이다. 일반적으로 3- tier는 web서버-was서버-db서버를 지칭한다.
- 3tier구조는 백엔드 전용서버가 있어서 무거운 작업을 처리하기에 2-tier보다 성능이 좋으나, 구조가 복잡한 단점이 있다.
참고)
'알아두면쓸데있는신기한잡학사전 > 고군분투흔적들' 카테고리의 다른 글
[Web] FE - HTML (0) | 2022.08.10 |
---|---|
[Web] FE - 웹 기초(서버/클라이언트/웹의 동작 개념) (0) | 2022.08.10 |
[Project] WEB, WAS 서버 (0) | 2022.08.04 |
[CSS3] 기초 선택자와 단위 (0) | 2022.04.27 |
[HTML5] 입력 양식 태그와 구조화 태그 (0) | 2022.04.26 |