웹 기본 동작 방식
- 브라우저에서 서버에 데이터를
요청(Request)
하고, 서버는 이에 대한 응답(Response)
데이터를 만들어서 브라우저로 보내게 된다.
- 이때 서버는 브라우저로 보낼 데이터가 정적인 데이터인지 동적인 데이터인지에 따라서 다르게 처리한다.
정적 컨텐츠와 동적 컨텐츠
정적 컨텐츠(Static)
- 실시간으로 변화가 없는 데이터
- 요청시 즉시 응답 가능한 컨텐츠로 image, html, css, javascript 파일이 해당된다.
동적 컨텐츠(Dynamic)
- 실시간으로 변화가 있는 데이터
- 사용자의 요청에 따라 각각 다른 형태인 동적 contents를 반환
Web Server
- HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 서버
기능
- 웹 브라우저의 클라이언트로부터 HTTP 요청을 받아
정적 컨텐츠
를 제공하는 역할
→ WAS를 거치지 않아 속도가 빠름
- 동적 컨텐츠 요청시 WAS에게
요청(Request)
을 넘겨주고 WAS에서 처리한 결과 (응답, Response)
를 웹 브라우저의 클라이언트에게 전달하는 역할
WAS(Web Application Server)
- Web Server가 단독으로 처리할 수 없는 DB 조회나 다양한 로직 처리를 요구하는
동적 컨텐츠
를 제공하기 위해 만들어진 Application Server
- WAS는
Web Server
와 Web Container
가 합쳐진 형태로, Web Server 기능을 포함하면서 사용자의 다양한 요구에 해당하는 애플리케이션 로직을 수행할 수 있다.
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는
미들웨어
이다.
- JSP, Servlet 구동환경을 제공해주기 때문에
웹 컨테이너(Web Container)
or 서블릿 컨테이너(Servlet Container)
라고도 불린다.
- ex) Tomcat, Jeus, Undertow
Web Server와 WAS 구분
-
웹 페이지는 보통 정적 컨텐츠와 동적 컨텐츠 모두 존재한다.
-
이때 정적 컨텐츠는 Web Server만을 사용해서 서비스를 제공하고, DB 조회나 다양한 비즈니스 로직이 요구되는 동적 컨텐츠는 WAS을 사용해서 서비스를 제공한다.
💡이 둘의 기능을 분리하는 이유는?
- WAS가 정적 컨텐츠와 동적 컨텐츠를 모두 서비스하면 부하가 커지고 비교적 복잡한 동적 컨텐츠의 처리속도가 느려질 수 있어 서버 부하가 발생할 수 있다.
- 따라서 단순한 정적 컨텐츠는 Web Server가 담당하고 WAS는 복잡한 동적 컨텐츠를 위한 처리에 집중해야 한다.
Reference
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://devmoony.tistory.com/113