웹 서버와 WAS의 차이점에 대해 명확하게 설명하고 싶어서 그리고 실무에서는 어떤 방식으로 이루어져 있는지에 대해 글을 씁니다.
일단 우리가 사용하는 웹페이지는 모~두 HTTP로 통신을 하고 있다.
HTML, 이미지, CSS, JSON.. 등 모든 데이터를 HTTP로 통신을 하기 때문에 동적 혹은 정적으로 데이터를 보여준다.
왜 갑자기 HTTP 얘기가 나왔느냐
웹서버(Web Server)
웹서버는 HTTP기반으로 동작하기 때문이다.
웹서버는 보통 정적인 리소스를 제공해준다 ex) HTML, CSS, 이미지
그리고 이러한 웹서버는 우리는 Apache 혹은 Nginx를 사용한다.
웹 애플리케이션 서버 (Web Application Server = WAS)
WAS 역시 HTTP 방식으로 통신한다.
WAS는 동적+정적인 역할을 둘다 할 수 있다. 동적인 역할만 할 수 있다고 알고 있었다.
또한 프로그램 코드를 통해 어플리케이션을 실행 시킬 수 있다! (웹서버와 확연히 다른 역할을 수행하고 있다.)
ex) HTTP API, 서블릿, JSP, Spring MVC가 있다.
Web Server 와 WAS의 차이를 글로 다시 한번 정리해보겠다.
• 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직
• 웹 서버도 프로그램을 실행하는 기능을 포함하기도 한다
• 웹 애플리케이션 서버도 웹 서버의 기능을 제공한다.
• 자바는 서블릿 컨테이너 기능을 제공하면 WAS
• 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있다.
• WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다.
여기서 의문점이 하나 생길 수 있다.
아니 WAS에서 정적 동적 리소스를 다 사용할 수 있으면 WAS만 사용하면 되지 왜 굳이 Web Server를 사용해야 할까?
물론 가벼운 프로젝트나 규모가 작은 프로젝트에서는 WAS, DB만을 이용하여 웹 시스템을 구축 할 수 있다.
하지만 조금 많은 요청을 처리하다보면 WAS 혼자서 많은 일을 감당해야 할 것이다.
정적 , 동적 리소스를 다 ~~ 혼자서 처리해야한다.
마치 누구를 보는것 같네..
서버 과부하가 생기기도 하고 WAS에 장애가 생겨도 WebServer의 정적 리소스도 없기 때문에 사용자에게 보여줄 페이지도 없다.
그래서 WebServer도 웹 시스템을 구축할때 함께 사용해야한다.
현재 다니고 있는 직장에서도 이러한 방식으로 Nginx , Tomcat을 사용하고 있다.
위의 방식으로 구축을 하면 정적인 데이터는 WebServer가 전담하여 리소스를 처리하고, 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임 한다. 동적인 처리를 요청받은 WAS는 중요한 애플리케이션 로직 처리 전담하게 된다.
'BackEnd' 카테고리의 다른 글
RestTemplate, WebClient 의 특징과 차이점 (0) | 2021.09.26 |
---|---|
Kakfa란 ? (개념, 동작원리) (0) | 2021.05.17 |
JPA(Java Persistence API), Hibernate 란? (0) | 2021.04.25 |
Connection Poll (커넥션풀) (0) | 2021.04.24 |
메세지 큐 (0) | 2021.04.14 |