본문 바로가기

JAVA

웹서버 vs WAS

728x90

1. 정적 페이지 vs 동적 페이지

 

정적 페이지 :클라이언트의 요청에 해당하는 파일 경로 이름 받아 파일로 전해줌(html, css ,javascript , 이미지 등등)

=> 항상 동일한 페이지를 변환함(Static page) ex) GET index.html

 

동적 페이지 : Request Parameter에 맞게 기능을 수행해서 만들어진 결과물을 반환함(Servlet)

 

 

2. 웹서버 vs WAS (웹 어플리케이션 서버)

 

2-1) 웹서버 : HTTP 프로토콜 기반으로 클라이언트의 요청을 처리하는 서버

-> 정적인 페이지 제공(WAS 거치지 않고)

-> 동적인 페이지 제공을 위해 요청을 Web Container에 전달하고 처리한 결과를 클라이언트에게 전달

 

ex) Nginx 설정파일

 

WAS (Web Application Server)

- 비즈니스 로직을 처리해서 동적 컨텐츠를 만들수있는 서버로 웹 컨테이너 혻은 서블릿 컨테이너라고도 부름

(JSP,Servlet 을 구동 가능)

즉 WAS = Web server + Web container

 

– WAS의 내부동작


① 웹서버로 부터 요청이 들어오면 제일먼저 컨테이너가 이를 알맞게 처리한다. (Filter 등)
② 컨테이너는 배포서술자(web.xml)를 참조하여 요청에 대한 서블릿을 알수 있고 필요하다면 서블릿 스레드를 생성(생성자 + init)하고 요청(httpServletRequest) 및 응답(httpServeletResponse) 객체를 생성하여 서블릿에 전달한다.
③ 다음으로 컨테이너는 서블릿을 호출(service())한다.
④ 호출된 서블릿의 작업을 담당하게 된 스레드(미리 생성된 스레드)는 요청에 따라 doPost() 또는 doGet()을 호출한다.⑤ 호출된 doPost() 또는 doGet() 메소드는 생성된 동적페이지를 Response객체에 실어서 컨테이너에 전달한다.
⑥ 컨테이너는 전달받은 Response객체를 HTTPResponse형태로 전환하여 웹서버에 전달하고 생성되었던 스레드를 종료하고 요청(httpServletRequest) 및 응답(httpServeletResponse) 객체를 소멸시킨다.

 

- web.xml (웹 어플리케이션을 위한 각종 서블릿 URL 매핑, 필터, 인코딩에 대한 환경설정)

-  dispatcher servlet

 

WAS로 들어오는 모든 요청을 처리 하는 프론트 컨트롤러로 공통처 리 작업(Filter)를 처리한후에 해당하는 controller로 전달해준다.

 

web server와 was 를 구분하는 이유?

- WAS는 DB조회나 비즈니스 로직 수행으로 바쁜 상태이므로 단순한 정적 컨텐츠 조회라면 Web server가 빠르게 처리하게 하면 WAS의 부담을 줄일 수 있음(페이지 로딩 시간 감소)

 

- 여러대의 WAS를 하나의 웹서버에 연결시켜 Load Balancing 를 할수 있게됨

- 로드 밸런싱으로 Fail over(장애 처리), Fail back(장애 복구) 처리로 무중단 운영이 가능함

 

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

'JAVA' 카테고리의 다른 글

JAVA 8 - 람다 추가  (0) 2020.08.15
JAVA 8 (2) - Optional  (0) 2020.08.15
StringBuilder vs StringBuffer  (0) 2020.07.02
Java String  (0) 2020.07.02
JAVA 클래스의 == , equals 에 대해 알아보자  (0) 2020.06.03