정적 페이지(Static Pages)와 동적 페이지(Dynamic Pages)
Web Server와 WAS(Web Application Server)
WebServer
역할
- HTTP 요청 처리 : 웹 서버는 클라이언트로부터 받은 HTTP 요청을 처리하고, 이에 따른 정적 컨텐츠를 반환한다.
- 동적인 컨텐츠를 제공하기 위해서는 WAS로 클라이언트 요청을 보내고 WAS에서 처리한 결과를 클라이언트에게 전달한다.
종류
- Apache, Nginx, IIS
WAS (Web Application Server)
역할
- 클라이언트 요청에 따라 데이터베이스 조회와 비즈니스 로직 처리를 통해 동적인 페이지를 생성하여 클라이언트에게 반환한다.
종류
- Tomcat, JBoss, WildFly
WebServer와 WAS를 구분하는 이유
- 자원 효율성
- 웹 서버는 정적인 파일을 처리하므로 빠르게 응답할 수 있다.
- WAS는 동적 컨텐츠를 처리하므로 데이터베이스 조회 및 비즈니스 로직 처리 등이 필요하므로 응답이 더 느릴 수 있다.
- 따라서 분리를 통해 웹 서버의 부하를 줄이고 성능을 향상시킬 수 있다.
- 장애 극복
- WAS의 장애나 유지 보수 중단 시에도 웹 서버는 정적 컨텐츠를 계속 제공할 수 있다. 이로써 서비스의 중단을 최소화 할 수 있다.
효율적인 아키텍처
따라서 가장 효율적인 방법은 웹 서버와 WAS를 분리하되, 웹 서버 앞에 웹 서버에 연결할 수 있는 여러 개의 WAS를 두어 분하 분산을 구현하는 것이다.
동작과정
- 클라이언트의 요청이 웹 서버에 도착
- 웹 서버는 정적 컨텐츠를 제공하는 요청을 바로 처리하여 응답
- 동적 컨텐츠가 필요한 경우 웹 서ㅓ버는 해당 요청을 WAS로 전달
- WAS는 해당 요청을 처리하기 위해 관련된 Servlet을 메모리에 로드
- 웹 서버는 클라이언트의 요청에 대한 정보를 HttpServletRequest 객체로 생성하고, 동시에 HttpServletResponse 객체를 준비
- WAS는 클라이언트의 요청에 따라 적절한 Servlet의 service() 메서드 호출
- service() 메서드는 doGet()또는 doPost() 메서드등을 호출하여 요청에 맞는 동적 컨텐츠를 생성하고, 그 결과를 Response 객체에 담음
- 생성된 동적 컨텐츠를 Response 객체에서 WAS는 HttpResponse 형태로 바꾸어 웹 서버에 반환
- 웹 서버는 받은 동적 컨텐츠를 클라이언트에게 응답
- 생성된 스레드는 종료되며, HttpServletRequest와 HttpServletResponse 객체는 메모리에서 제거
'Computer Science > Web' 카테고리의 다른 글
[Web] JWT (JSON Web Token) (0) | 2023.08.31 |
---|---|
[Web] OAuth (0) | 2023.08.10 |
[Web] REST API (0) | 2023.08.10 |
[Web] HTTP Request Methods & Status Code (0) | 2023.08.01 |
[Web] 쿠키 (Cookie) & 세션 (Session) (0) | 2023.07.24 |