Web Server vs WAS
결론부터 말하자면 이 둘의 차이는 "상황에 따라 변하는 정보를 제공할 수 있는가"이다. 여기서 상황에 따라 변하지 않는 것은 Static, 변하는 것은 Dynamic 이라고 한다.
예를들어 NAVER의 logo 검색 버튼 등은 홈페이지 개편등의 작업이 없는 한 거의 변하지 않는 정적자원이다 (img, html, css, javascript 파일과 같이 컴퓨터에 저장된 파일)
Web Server
- 웹 서버에서는 정적 컨텐츠만 처리하도록 기능 분배를 해서 서버의 부담을 줄여준다
- 예를 들어, 웹 문서(html)가 클라이언트로 보내질 때, 이미지 파일과 같은 정적 파일은 함께 보내지지 않음. 먼저 html 문서를 받고, 이에 필요한 이미지 파일들을 다시 서버로 요청해서 받아오는 것
- 따라서 웹 서버를 통해서 정적인 파일을 애플리케이션 서버까지 가지 않고 앞단에 빠르게 보낼 수 있음
WAS
- WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 그때마다 결과를 만들고 제공하면서 자원을 효율적으로 사용할 수 있음
- 웹 서버만으로는 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어놓고 서비스하기에는 자원이 절대적으로 부족함
- WAS를 통해 요청이 들어올 때마다, DB와 비즈니스 로직을 통해 결과물을 만들어 제공
WAS로 Web Server역할까지 다 할 수 있지만 단순한 정적 컨텐츠는 Web Server에게 맡겨야 함
만약 WAS가 정적 컨텐츠 요청까지 처리하면 부하가 커지고, 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려짐. 따라서 WAS는 DB조회, 다양한 로직을 처리하는 데 더 집중해야 함
Web Server를 WAS 앞에 두고, 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산처리가 가능하다
web.xml
을 참조해 해당 Servlet에 대한 스레드를 생성 (스레드풀 이용)HttpServletRequest
와 HttpServletResponse
객체를 생성해 Servlet
에게 전달Response
객체에 담아 WAS에 전달HttpServletRequest
와 HttpServletResponse
객체 제거