Apache & Tomcat
기본적으로 아파치는 웹서버(WS), 톰캣은 웹 어플리케이션 서버(WAS)이다. 그래서 versus가 아니라 &를 썼다.
WAS와 WS의 기능적인 부분을 이해하면 둘의 관계를 알 수 있다.
대략적인 웹 서버와 웹 어플리케이션 서버의 관계도이다.
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 |