웹 서버(WS)와 웹 어플리케이션 서버(WAS)
웹 서버 (Web Server)
- HTTP 기반으로 동작
- 정적 리소스 제공, 기타 부가기능
- 정적(파일) HTML, CSS, JS, 이미지, 영상
- 예) NGINX, APACHE
웹 어플리케이션 서버 (WAS - Web Application Server)
- HTTP 기반으로 동작
- 웹 서버 기능 포함 + (정적 리소스 제공 가능)
- 프로그램 코드를 실행해서 애플리케이션 로직 수행
- 동적 HTML, HTTP API (JSON)
- 서블릿, JSP, 스프링 MVC
- 예) Tomcat, Jetty, Undertow
웹 서버와 웹 어플리케이션 서버의 차이점
간단하게 차이점을 구분하면 사용하는 기능에 따라 나누어진다.
웹 서버(WS) | 웹 어플리케이션 서버(WAS) |
정적(파일) HTML, CSS, JS, 이미지, 영상 | 애플리케이션 로직 수행 |
실질적으로는 WAS 하나로 정적 리소스, 애플리케이션 로직 모두 사용 가능하다.
하지만 규모가 커질 수록
- WAS가 너무 많은 역할을 담당하게 된다. (서버 과부하 우려)
- 정적 리소스 떄문에 애플리케이션 로직을 수행하는데 문제가 생길 가능성도 있다.
- WAS 장애시 오류 화면도 노출 불가능하다.
따라서 가장 이상적인 방법은
WS와 WAS를 나누어 정적 리소스는 WS가 처리하고
WS는 애플리케이션 로직 같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.
이렇게 나누게 되면
- WAS는 중요한 애플리케이션 로직 처리만 전담한다.
- WAS장애시 WS는 살아있기에 WAS의 응답 여부에 따라 오류 화면도 노출시킬 수 있다.
사실 웹 서버도 웹 애플리케이션 서버의 기능을 포함 하기도 하고
웹 애플리케이션 서버도 웹서버의 기능을 포함 하기때문에
실제로는 둘의 용어와 경계가 모호 하다고 한다.
Reference
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/
'Spring' 카테고리의 다른 글
[Spring] 유효성 검사(Validating Form) (0) | 2021.08.18 |
---|---|
[Spring] HTTP 메시지 컨버터 (HttpMessageConverter) (0) | 2021.08.02 |
[Spring] 다양한 요청 매핑(Request Mapping) (0) | 2021.08.01 |
[Spring] 동시요청 - 쓰레드와 멀티 쓰레드(multi thread) (0) | 2021.07.22 |
[Spring] 빈 생명주기(Lifecycle) 콜백 - 3가지 방법 (0) | 2021.07.06 |