Web

[Web] 웹서버와 WAS의 차이(+웹 컨테이너에 대해)

Binceline 2017. 10. 21. 23:47

참고 : http://slog2.egloos.com/v/3787621

- http://guruble.com/about-servlet/

http://toby.epril.com/?p=1125




보통 http 같은 웹 기반 통신 프로토콜을 이용하는 서버를 웹서버라 하지만,


엄밀히 하기 위해 웹서버와 WAS(Web Application Server)라는 용어를 잘 구별하여 사용하려 한다.



웹서버 - 어떤 동적인 처리를 할 수 없다. html 파일 등을 http로 Serve하는 역할만을 수행한다.

- 정적 서비스만 제공 가능

- DB 연동 등의 처리 불가능

- apache, nginx, gws, etc...



WAS - 웹서버에서 처리할 수 있는 데이터로 가공하여 제공해 주는 역할을 한다.

- http 통신 기능 같은 기능은 없음. 오직 웹서버를 위한 미들웨어

- ASP, PHP, JSP, 등의 언어를 해석하여 실행해 줌

- DB 연동 등의 처리 가능

-> 동적 서비스 제공이 가능하다는 말은 이런 이유에서다.

- ex) tomcat, jeus, web logic, etc...





* Tomcat의 경우 WAS이지만 웹서버 기능이 내장되어 있다. 하지만 느리기 때문에 Apache 웹서버와 함께 사용된다.


...고 하지만 현재 이것은 잘못된 사실이 되었다.

*현재 Tomcat은 5.5버젼부터 httpd(Apache)의 native 모듈을 사용해서 정적 파일을 처리하는 기능을 제공하는데, httpd와 같은 모듈을 사용하는 것이기 때문에 성능 차이가 날 수 없다고 한다. 이는 Tomcat / httpd의 핵심 개발자들이 다음 링크에 직접 언급했다. 

http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one-should-always-use-apache-httpd-front-apache-tomcat-improve-perform


그렇기 때문에, 


Spring 서버 개발을 할 때에도 Tomcat 연동 후 굳이 정적 페이지 호스팅을 위해 Apache httpd를 사용할 필요가 없다는 것이다.



* Apache의 경우 웹서버이지만 php, python, ruby 등의 언어 컴파일 모듈이 존재해서, 그에 한해서 동적인 처리가 가능하다.


그리고, '웹 컨테이너'라는 용어가 있는데, 다음과 같은 성질을 가진다.


웹 컨테이너

- 통상적으로 Java에 관련해서 쓰이는 용어이다.

- Tomcat 등이 존재하며, Java는 결국 JSP를 사용해도 서블릿으로 변환되어 사용되기 때문에, Tomcat은 서블릿 컨테이너라고도 

불린다.

- 네트워크 통신, 서블릿 생명 주기, Thread 기반의 병렬처리 등을 관리해 준다.




웹서버이지만 WAS 기능이 내장되어 있기도 하고, WAS지만 웹서버 기능이 내장되어 있는 경우가 있어서 뭐가 뭐다! 라고 하기가 굉장히 어렵다...


만약 틀린 점이 있다면 댓글로 가르쳐 주시면 감사하겠습니다.

반응형