Web Server
- 클라이언트가 서버 페이지에 요청하면 요청을 받아 정적 컨텐츠(.html, .css 등)를 제공하는 서버
- HTTP 프로토콜을 기반 클라이언트의 요청을 서비스 하는 기능 담당
- 동적 컨텐츠 제공이 필요한 경우 HTTP Request를 Was에게 릴레이함
대표적으로 Apache가 가장 많이 사용되는 웹 서버 이다.
- 정적인 데이터 처리(단순 이미지나 html 파일과 같은 리소스만을 제공하는 서버는 빠르고 안정적이게 활용)
- 아파치 소프트웨어 재단에서 관리하는 http 웹 서버(구축 쉬움, 다양한 추가 기능, 무료)
WAS(Web Application Server)
- 비즈니스 로직을 처리하여 동적 컨텐츠를 제공하는 서버
- 정적 & 동적 컨텐츠 처리가 모두 가능함
- 아파치 웹 서버보다는 느림
- 웹의 모든 정적 & 동적 데이터를 모두 WAS가 처리한다면 결과적으로 사용자 요청 응답이 느려짐
- WAS의 비즈니스 로직은 DB 조회나 다양한 로직 처리를 요구하는 경우가 많음
- 수행 시간이 늘어남
- 정적 컨텐츠의 경우 웹 서버에서 제공하는 것이 로드 분산에 효율적
- 웹 서버 없이 WAS에 직접 접근할 경우 WAS port number가 노출되어 보안상 좋지 않음
- 하나의 웹 서버에서 여러 WAS를 통해 서비스함으로써 failover에 유리하도록 설계
대표적으로 Tomcat 이 있다.
- 아파치 재단의 WAS
- 웹 서버 + 서블릿 컨테이너
- 서블릿을 실행시켜 JSP 코드가 포함된 웹 페이지를 만듦
- 웹 서버에서 넘어온 동적인 페이지를 읽어 들여 프로그램을 실행하고 그 결과를 html 재구성하여 아파치에게 돌려줌
웹 서버와 WAS 동작 과정
Client -> Web Server -> WAS -> DB 구조를 가진다고 가정했을 때
- Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받음
- Web Server는 클라리언트의 요청(Request)을 WAS에 보냄
- WAS는 관련된 Servlet을 메모리에 올림
- WAS는
web.xml
을 참조하여 해당 Servlet에 대한 Thread를 생성(Thread Pool 이용) HttpServletRequest
와HttpServlerResponse
객체를 생성하여Servlet
에 전달- 5.1 Thread는 Servlet의
service()
메서드 호출 - 5.2
serviec() 메서드의 요청에 맞게
doGet()또는
doPost()` 메서드를 호출protected doGet(HttpServletRequest request, HttpServletResponse response) protected doPost(HttpServletRequest request, HttpServletResponse response)
- 5.1 Thread는 Servlet의
- doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 동적 페이지를
Response
객체에 담아 WAS에 전달 - WAS는
Response
객체를HttpResponse
형태로 바꿔Web Server
에 전달 - 생성된 Thread를 종료하고
HttpServletRequest
와HttpServletResponse
객체 제거
'Spring' 카테고리의 다른 글
[JSP] Redirect 와 Forward 비교 (0) | 2022.10.20 |
---|---|
[JSP] Implicit Object, Directive, Action Tag (0) | 2022.10.20 |
[Web] 정적, 동적 웹페이지 (0) | 2022.10.20 |
[Web] GET 과 POST 의 차이 (0) | 2022.10.20 |
[JSP] 서블릿(Servlet) 과 JSP (0) | 2022.10.19 |