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 |