웹은 HTTP 기반으로 동작한다
웹 브라우저에서 URL을 치고 접속하면, 인터넷을 통해서 해당 URL 서버에 요청을 하고 응답을 받아 웹 브라우저가 그려준다.
이 때, 요청과 응답은 HTTP 프로토콜을 기반으로 동작한다.
HTTP 기반으로 동작하며, HTTP 요청에 대한 응답을 정적 리소스(HTML, CSS, JS, 이미지등)로 제공하는 역할을 수행하는 서버이다.
EX) 아파치, NGINX
마찬가지로 HTTP 기반으로 동작하며 HTTP 요청에 대한 응답을 정적 리소스를 제공하는 역할은 웹 서버와 같지만, 추가로 프로그램 코드를 실행해서 어플리케이션 로직(DB 접속 등 DB 관련 처리, 비즈니스 로직 수행등)을 수행한 결과를 응답해주는 서버이다.
서블릿, JSP, 스프링 MVC등으로 구현할 수 있다.
EX) 톰캣, Jetty, Undertow
아파치는 웹 서버, 톰캣은 웹 어플리케이션 서버
웹 서버의 기능을 웹 어플리케이션 서버도 제공하기 때문에, 웹 어플리케이션 서버만 사용할 것 같지만, 그렇지 않다.
정적 리소스는 웹 서버가 처리하고, 어플리케이션 로직과 같은 동적인 처리가 필요하면 WAS에 넘기는 식으로 둘 다 사용한다.
-> 서버 부하를 방지
상대적으로 웹 서버는 WAS, DB보다는 문제 발생빈도가 적기 때문에, WAS,DB 장애 시 웹 서버가 오류 화면을 제공하는 형태로 운용한다.
위와 같이 구성함으로써 리소스를 효율적으로 관리할 수 있다
정적 리소스가 많이 사용되면 WS 증설 / 애플리케이션 리소스가 많이 사용되면 WAS 증설