본문 바로가기

웹 앱

[tomcat] Apache와 tomcat의 상관관계

Apache & Tomcat

 

기본적으로 아파치는 웹서버(WS), 톰캣은 웹 어플리케이션 서버(WAS)이다. 그래서 versus가 아니라 &를 썼다.

 

WAS와 WS의 기능적인 부분을 이해하면 둘의 관계를 알 수 있다.

 

대략적인 웹 서버와 웹 어플리케이션 서버의 관계도이다.

 

출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

1. 웹 서버(Web Server)

 

 웹 클라이언트로부터 http 요청을 받아서 컨텐츠를 제공하는 프로그램이다. 컨텐츠라는 것은 정적인 컨텐츠와 동적인 컨텐츠로 나뉘는데 그 종류에 따라서 서비스 방식이 바뀐다.

  1) 정적인 컨텐츠 제공

      WAS를 거치지 않고 바로 클라이언트로 자원을 제공한다.

  2) 동적인 컨텐츠 제공

      클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(Response)한다.

  - 웹 서버의 예 : Apache, Nginx 등

 

 

2. 웹 어플리케이션 서버(Web Application Server)

 

 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server로 클라이언트의 http요청을 받아 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어다. 내부적인 구조로 웹 서버와 웹 컨테이너가 들어있다.

즉, WAS = Web Server + Web Container

 1) Web Container

     자바일 경우 JSP, Serverlet Class 파일을 실행하기 위한 실행 환경을 제공하는 역할. 주로 DB와 함께 실행된다.

 2) Web Server

     웹 서버가 WAS안에도 존재한다. 역시 URL 주소의 해석을 맡아 컨텐츠를 넘겨주고, 요청된 URL이 Servlet Class 또는

    JSP 파일의 경우 Web Container가 처리하도록 요청을 넘긴다. 처리 후에 그 결과를 다시 받아 클라이언트에게 제공      한다.

 - WAS의 예 : Tomcat, JBoss, Jeus, Web Sphere 등 

 

 

그런데 가만 보니 WAS 내부에도 Web Server가 존재한다! 그렇다면 클라이언트와 WAS를 한 번에 연결하면 되지 굳이  WS를 거치는 이유는 뭘까? 

  1) 기능을 분리하여 서버 부하 방지

  2) 물리적으로 분리하여 보안 강화

  3) 여러 대의 WAS를 연결 가능

  4) 여러 웹 어플리케이션 서비스 가능(php와 java를 함께 사용)

 등등...

 이러한 조건들이 필요 없다면 WAS만 사용해도 상관없다. 요즘은 WAS안의 WS도 성능이 괜찮아서 속도차이도 거의 안 난다고 한다.

 

 

자세한 부분은 https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html 를 참고!

 

* JSP, servlet 개념 : https://kit2013.tistory.com/79

'웹 앱' 카테고리의 다른 글

[CSS] link vs import  (0) 2019.07.31
[부트스트랩]Jumbotron 만들기  (0) 2019.07.31
[부트스트랩]bootstrap 시작  (0) 2019.07.29