728x90
Web Server & WAS(Web Application Server)
Web Server
- 클라이언트가 서버 페이지에 요청하면 요청을 받아 정적 컨텐츠 (.html, .css 등)을 제공하는 서버
- Static Pages (정적 페이지)
- Web Server는 파일 경로 이름을 받아 경로와 일치하는 파일 컨텐츠 반환
- 항상 동일한 페이지를 반환
- ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
- Static Pages (정적 페이지)
- HTTP 프로토콜을 기반 클라이언트 (웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능 담당
- 동적 컨텐츠 제공이 필요한 경우 HTTP Request를 WAS에게 릴레이함
- 대표적으로는 Apache가 있음
Web Application Server
- 비지니스 로직을 처리하여 동적 컨텐츠를 제공하는 서버
- Dynamic Pages (동적 페이지)
- 인자의 내용에 맞게 동적인 컨텐츠 반환
- 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물
- 개발자는 Servlet에 doGet()을 구현함
- Servlet: WAS 위에서 돌아가는 Java Program
- Dynamic Pages (동적 페이지)
- 정적 & 동적 컨텐츠 처리가 모두 가능함 (standalone 가능)
- 아파치 웹 서버보다는 느림
- 웹의 모든 정적 & 동적 데이터를 모두 WAS가 처리한다면 결과적으로 사용자 요청 응답이 느려짐
- WAS의 비즈니스 로직은 DB 조회나 다양한 로직 처리를 요구하는 경우가 많음
- 수행 시간이 늘어남
- 정적 컨텐츠의 경우 웹 서버에서 제공하는 것이 로드 분산에 효율적
- 웹 서버 없이 WAS에 직접 접근할 경우 WAS port number가 노출되어 보안상 좋지 않음
- 하나의 웹 서버에서 여러 WAS를 통해 서비스함으로써 failover에 유리하도록 설계
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어 (소프트웨어 엔진)
- 웹 컨테이너 (Web Container) 혹은 서블릿 컨테이너 (Servlet Container)
- 컨테이너란 JSP, Servlet을 실행시킬 수 있는 소프트웨어
- WAS는 JSP, Servlet 구동 환경 제공
웹 서버와 WAS 동작 과정
- Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받음
- Web Server는 클라이언트의 요청 (Request)을 WAS에 보냄
- WAS는 관련된 Servlet을 메모리에 올림
- WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성 (Thread Pool 이용)
- HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출
- protected doGet(HttpServletRequest request, HttpServletResponse response) protected doPost(HttpServletRequest request, HttpServletResponse response)
- 5-1. Thread는 Servlet의 service() 메서드를 호출
- doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 동적 페이지를 Response 객체에 담아 WAS에 전달
- WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달
- 생성된 Thread를 종료하고 HttpServletRequest와 HttpServletResponse 객체 제거
'JSP&Servlet' 카테고리의 다른 글
JSP&Servlet - Session (0) | 2022.11.18 |
---|---|
JSP&Servlet - Foward, Redirect (0) | 2022.11.18 |
JSP&Servlet - Action Tag(액션 태그) (0) | 2022.11.18 |
JSP&Servlet - Directive (0) | 2022.11.18 |
JSP&Servlet - Implicit Object(묵시적 객체) (0) | 2022.11.18 |
댓글