Web Server
1. HTTP 기반으로 동작
2. 단순 '정적 리소스'를 제공
(ex : apache, nginx)
WAS
1. HTTP 기반으로 동작
2. Web Server 기능을 포함 (정적 리소스 제공)
3. 프로그램 코드를 실행하여 애플리케이션 로직 수행 (동적 처리 가능. Servlet, JSP, 스프링 MVC 등)
(ex : tomcat, jetty, undertow)
Web Server가 동적 기능까지 포함하는 경우도 있기 때문에 둘의 경계는 매우 모호하다.
그래도 굳이 정리하자면
웹서버는 정적 리소스 담당, WAS는 정적 리소스 + 동적 기능 담당 정도로 생각할 수 있다.
WAS + DB만으로 시스템을 구성할 수는 있지만 이 경우 WAS의 역할이 너무 많아지고 서버 과부하의 위험이 있다.
정적 리소스 제공 역할을 수행하느라 정작 중요한 애플리케이션 로직의 수행에 어려움을 겪을 수 있다.
또한, WAS가 모든 역할을 맡게 되면 WAS가 죽었을 때 오류 화면을 노출해주는 것도 할 수 없게 된다.
이러한 문제들을 해결하기 위해 일반적으로 정적 리소스 처리만을 위한 웹서버를 따로 두고 WAS는 동적 기능에만 집중하는 식의 구성을 취한다.
이렇게 역할을 구분해놓으면 효율적인 리소스 관리가 가능하단 장점도 있다.
(정적 리소스 사용이 많으면 웹서버 증설, 애플리케이션 리소스 사용이 많으면 WAS 증설)
만약 화면을 띄워줄 필요 없이 API 통신으로 데이터만 넘겨주면 되는 경우라면 WAS만으로 구성하여도 문제될 것이 없다.
'김영한님 스프링 강의 정리 > 스프링 MVC' 카테고리의 다른 글
멀티 쓰레드 (요청마다 생성 vs 쓰레드 풀) (0) | 2021.08.15 |
---|---|
Servlet (0) | 2021.08.15 |