apache와 apache tomcat의 차이점이 궁금해졌다.
개발을 할 때 그냥 이클립스에서 tomcat 설정 방법에 대해서만 알아보고
어떻게 서버를 띄우는지 tomcat을 설치해서 올리는 법에 대해서만 공부하고
내가 개발을 할 때 어떤 것을 사용하고 있는지 근본을 알아야 할 것 같다는 생각에 정리해봤다.
apache는 apache에서 제공하는 http 웹서버를 지칭하는 말인데
http 웹서버는 http 요청을 처리할 수 있는 웹서버이다.
클라이언트가 get, post, delete 등의 메서드를 이용해 요청을 하면
이 프로그램이 어떤 결과를 돌려주는 기능을 한다.
다시 말해 아파치는 웹서버이다.
tomcat은 포괄적인 의미에서 WAS (Web Application Server) 라고 말한다.
WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여
다양한 역할을 수행할 수 있는 서버를 말한다.
WAS = Web Server + Web Container
동작 방식
클라이언트(요청) -> 웹서버(요청 받아 컨테이너로 전송) -> 웹 컨테이너(JSP, Servlet 구동 환경 제공)
-> 동적 데이터를 처리 -> 웹서버(결과값을 받아 클라이언트에게 전송, 정적 데이터 처리) -> 클라이언트
위 동작 방식을 보면 was안에 웹 서버가 포함되어 있음을 확인할 수 있다.
tomcat이라고 한다면 아파치(웹 서버) + tomcat인 WAS를 말하는 것이고
apache라고 한다면 아파치(웹 서버) 자체만 말하는 것이라고 생각하면 될 것 같다는 결론이 났다!
그렇다면 tomcat만 사용하면 되는거 아닌가? 왜 apache는 존재하는 걸까 라는 궁금증에 찾아본 결과
정적인 응답의 처리는 web server가 유리하며, was의 과부하가 올 가능성에 대비한 요청 분산이 필요한데
apache web server는 분산 기능이 있으며 이러한 이유들로 인해 web server + was의 적절한 배치가 필요하다고 했다.
내가 개발을 할 때 어떤 것을 사용하고 있는지에 대한 의문만 남았는데
여태 나는 apache web server는 사용한 적이 없고
이클립스에서 웹 페이지를 만들거나, 리눅스에 tomcat을 설치하는 등 apache tomcat 만을 사용하고 있었다!!