이번 포스팅에서는 그동안 들어보면서 내용에 대해 애매모호했던 WS(Web Server)와 WAS(Web Application Server)에 대해 알아보고자 한다.
정의
- 클라이언트로부터 HTTP 요청에 대해 정적 컨텐츠*를 제공하는 서버
- 정적 컨텐츠: HTML, CSS 등 모든 클라이언트의 요청에 대해 항상 동일하게 제공되는 컨텐츠(요청값에 따라 바뀌지 않는 컨텐츠)
기능
- 클라이언트로부터 HTTP 요청 받을 시 응답
1. 정적 컨텐츠 제공
2. 동적 컨텐츠 요청 시 WAS로 전달 -> 결과를 클라이언트로 응답
ex) nginx, apche 등
정의
- 다양한 로직 처리가 요구되는 클라이언트 요청에 대해 동적 컨텐츠를 제공하는 서버
기능
- 클라이언트로부터 HTTP 요청 받을 시 응답
1. 정적 컨텐츠 제공
- 동적 컨텐츠 제공
ex) tomcat, jeus 등
WAS의 기능을 보면 WS의 기능인 정적 컨텐츠 제공을 직접 할 수 있다. 그렇다면 WS를 따로 사용하는 이유는 무엇일까?
정해진 동적컨텐츠만 제공하는 WS와 로직 처리가 필요한 정적컨텐츠를 처리하는 WAS로 나누어 역할을 분배하여 서버 부하 ↓
동적컨텐츠를 처리하는 WAS의 경우 사용자가 늘어날수록 하나의 WAS로는 버거워지며 여러대의 WAS 필요
이때 WS로 들어온 동적 요청에 대해 WS에서 여러대의 WAS에 부하를 조절하며 동적 요청을 전달
WAS의 경우 DB 접근 권한 등을 가지므로 보안이 중요
클라이언트의 요청을 WS가 받고 WAS로 전달하기 때문에 WAS가 외부로 노출되지 않음
하나의 WS로 다양한 언어의 어플리케이션을 함께 사용할 수 있음
WAS만으로 클라이언트의 요청 수행이 가능하다.
하지만 WS를 함께 사용한다면 보안, 서버 부하 방지 등 여러 이점들을 가져갈 수 있다.