WAS와 웹 서버의 차이점
💡 웹 서버(WEB)
- 작성된 HTML 페이지가 네트워크 망에 종속되지 않고 웹 서비스를 할 수 있도록 구축되어있는 정적 서버
- 웹 브라우저 클라이언트로부터 HTTP 요청을 받고 HTML 페이지를 반환
- 단순 HMTL, CSS, JS, 이미지, 파일 등을 즉시 응답한다.
ex: Apache
💡 WAS(웹 애플리케이션 서버, Web Application Server)
- DB 조회나 다양한 로직 처리가 필요한 동적 서버
- HTTP 프로토콜을 통해 사용자 PC나 장치에 애플리케이션을 수행해주는 미들웨어
- JSP, Servelt 구동환경 제공
- 웹 컨테이너 또는 서블릿 컨테이너라고도 불린다.
ex : tomcat
웹 컨테이너 : 웹 서버가 보낸 JSP, PHP 등의 파일을 수행한 결과를 다시 웹 서버로 보내주는 역할
💡 Web Service 아키텍쳐의 구조
1. 클라이언트(사용자) → Web Server → DB
2. 클라이언트(사용자) → WAS → DB
3. 클라이언트(사용자) → Web Server → WAS → DB
💡 클라이언트(사용자) → Web Server → WAS → DB의 동작 과정
1. Web Server는 웹 브라우저 클라이언트(사용자)로부터 HTTP 요청을 받는다.
2. Web Server가 클라이언트의 요청(Request)를 WAS에 보낸다.
3. WAS에서 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
6. protected doGet(HttpServletRequest request, HttpServletResponse response)
7. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
8. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
9. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

💡 WAS와 Web Server를 함께 써야하는 이유
WAS는 DB 조회 및 다양한 로직을 처리하는 역할에 집중해야 한다.
단순한 정적 컨텐츠는 Web Server에서 처리하도록 하여 기능을 분리시켜 서버 부하를 방지해야 한다.
[출처]
https://codechasseur.tistory.com/25
[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
서버 개발에 있어서 가장 기초적인 개념인 '웹 서버'와 'WAS(Web Application Servier)'의 차이점을 다뤄보려고 한다. 💡 웹 서버 사전적 정의 "웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML
codechasseur.tistory.com