본문 바로가기
WEB

[WEB] 웹서버와 WAS의 차이

by BK0625 2023. 7. 19.
반응형

서버 개발에서의 가장 기초적인 개념인 웹 서버와 WAS의 차이점을 알아보자

 

웹 서버(Web server)

웹 서버의 사전적 정의는 '웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램"이다. 즉 사용자가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버에서 그 요청을 받아 '정적 컨텐츠'를 제공하는 서버이다. 여기서 정적 컨텐츠는 단순 HTML 문서, CSS, javascript, 이미지, 파일 등 즉시 응답 가능한 컨텐츠이다. 웹 서버는 크게 두 가지 일을 하게 되는데

  •  단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리
  • 사용자로부터 동적인 요청이 들어왔을 때 해당 요청을 웹 서버 자체적으로 처리하기 어렵기 때문에 해당 요청을 WAS에 요청

출처 https://codechasseur.tistory.com/25

 

대표적인 웹 서버의 종류로는 Apache, Nginx 등이 있다.

 

WAS(Web Application Server)

WAS의 사전적 정의는 '인터넷 상에서 HTTP 프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 동적 서버 컨텐츠를 수행하는 것으로 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행된다' 라고 할 수 있다. WAS는 웹 서버와 웹 컨테이너가 합쳐진 형태로서, 웹 서버 단독으로는 처리할 수 없는 데이터 베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다. WAS는 JSP,서블릿 구동환경을 제공해주기 때문에 웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다.

 

 

 

대표적으로 Tomcat이 있다.

 

 

즉 웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 같은 정적인 리소스들을 전달하며 WAS만을 이용할 경우보다 빠르고 안정적으로 기능을 수행한다. 

 

반대로 WAS는 동적인 데이터를 위주로 처리하는 서버이다. 데이테베이스와 연결되어 사용자와 데이터를 주고 받고 조작이 필요한 경우 WAS를 활용한다.

 

그렇다면 WAS로 전부 가능하지 않을까? 굳이 웹 서버를 써야할까하는 의문이 들 수 있다.(내가 그랬다.) 하지만 WAS는 DB 조회 및 다양한 로직을 처리하는데 집중하고 단순한 정적 콘텐츠는 웹 서버에게 맡기며 기능을 분리해 서버 부하를 방지해줘야 한다. 이를테면 Nginx같은... 만약 WAS가 정적 콘텐츠 요청까지 처리하게 되면 부하가 커지고 동적 컨텐츠 처리가 지연되는 문제가 발생할 수 있다. 즉 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다. (물론 캐시 처리도 더 효율적으로 할 수 있다.)

 

 

추가

Tomcat은 보통 Apache Tomcat이라고 불리는데 그 이유는 Tomcat 5.5 버전부터 정적 컨텐츠를 처리하는 기능이 추가 되었는데 이 기능이 순수 Apache를 사용하는 것에 비해 성능적 차이가 없으며 Tomcat이 Apache의 기능을 포함하고 있기 때문에 Apache Tomcat이라고 부른다.

 

 

 

반응형

'WEB' 카테고리의 다른 글

[WEB] JWT 알아보기 (Json Web Token)  (0) 2023.09.14
[Redis] Redis란?  (0) 2023.09.11
[WEB] URL과 URI의 차이  (0) 2023.07.13
HTTP와 HTTPS, SSL  (0) 2023.01.19