웹 서버 (Web Server)
웹서버란 HTTP 기반으로 동작하여 적정 리소스 제공, 기타 부가기능등을 제공하는 서버를 말한다.
정적 HTML, CSS, JS, 이미지, 영상 등이 포함된다.
웹 애플리케이션 서버 (WAS - Web Application Server)
HTTP 기반으로 동작하며 웹 서버의 기능을 포함하여 프로그램 코드를 실행해서 애플리케이션 로직을 수행하는 서버를 말한다.
동적 HTML, HTTP API나 서브릿, JSP, 스프링 MVC를 포함한다.
간단하게 설명하면 웹 서버는 정적 리소스, WAS는 애플리케이션 로직을 담당하는 서버를 말한다.
하지만 실제로는 둘의 용어도 경계도 모호하다.
웹 서버가 프로그램을 실행하는 기능을 포함하기도 하고 반대로 WAS가 웹 서버의 기능을 제공하기 때문이다.
자바의 경우 서블릿 컨테이너 기능을 제공하면 WAS로 분류된다.
가장 명확한 차이는 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다는 것이다.
웹 시스템 구성
웹 시스템은 WAS와 DB만으로도 시스템 구성이 가능하다.
다만 이렇게 하면 WAS가 너무 많은 역할을 담당하여 서버 과부하의 우려가 있다.
또한, 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다는 단점도 있다.
WAS 장애 시 오류 화면도 노출 불가능한 것도 단점이다.
따라서 일반적으로는 웹서버와 WAS를 따로 두어 정적 리소스는 웹 서버가 처리하도록 하고 동적인 처리가 필요한 경우 웹서버가 WAS에 요청을 위임하도록 하여 중요한 애플리케이션 로직처리만 WAS가 전담하도록 하는 것이 이상적이다.
또한 이런 식으로 시스템을 구성하면 효율적인 리소스 관리가 가능하다는 장점도 있다.
예를 들어 정적 리소스 사용량이 증가하면 웹서버만 증가하고 애플리케이션 리소스 사용량이 많으면 WAS만 증설하면 되기 때문이다.
마지막으로 웹서버와 WAS를 분리하는 이유는 정적 리소스만 제공하는 웹 서버는 잘 죽지 않기 때문에 WAS 서버나 DB 장애시 웹서버가 오류화면을 제공할 수 있기 때문이다.
'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - 멀티 쓰레드 (0) | 2024.05.19 |
---|---|
Spring MVC - 서블릿 (0) | 2024.05.16 |