본문 바로가기
지식

Apache와 Tomcat의 차이점을 알아보자.

by mingutistory 2022. 7. 29.
728x90

항상 Apache Tomat을 사용하고 있지만 말 그대로 그냥 사용하고 있던 나 자신을 반성하며 스터디하면서 언급됬던 내용을 정리해봤다.

 

참고

https://okky.kr/article/623715?note=1783265

 

OKKY | 이해안가는 ..

왜 톰캣자체를 웹서버로 사용을 못하나요..? 왜 웹서버(아파치)와 was를 나눠둔건가요..? 그 답이 웹서버는 정적컨텐츠 was는 동적컨텐츠를 담당한다고 하는데 이상한건 제가 지금 제 본 데스크탑

okky.kr

 

아파치(Apache) 웹 서버

80번포트로 클라이언트 요청 (POST, GET, DELETE)등이 왔을 때 응답한다. 내용이 변하지 않는 정적인 페이지 처리 (html, image, css)한다.

Client가 동적인 웹 페이지를 요청 하는 경우 Web Container를 통해서(요청해서) 동적 페이지 결과를 생성하여서 응답한다.

 

웹 컨테이너 = 서블릿 컨테이너 (jsp 엔진, servlet)

동적인 페이지(.jsp, .java 등) 요청이 올 때마다 페이지에 필요한 정보를 그때그때 생성함으로써 서버의 리소스 부하를 줄일 수 있다. 동적으로 페이지를 생성하여 웹 서버에 전달하고 동적이기 때문에 사용자마다 다른 결과 응답 가능하다.

 

jsp를 servlet으로 변환하여 응답 페이지를 생성한다. 웹 구현 기술로 사용하는 servlet을 관리하고 jsp 파일을 실행 할 수 있게 해준다. reqeust,response 객체를 만들어서 서블릿에 넘겨주는 역할을 한다.

Tomcat = WAS (Web Application Server)

웹 어플리케이션이 실행 될 수 있는 환경을 제공하는 서버이다.

톰캣은 자바 어플리케이션을 위해서 만들어졌기 때문에(=JSP 서블릿 파일 처리를 위해서 만들어졌기 때문에) php와 같은 언어들을 사용 할 때는 굳이 Tomcat을 사용하지 않아도 된라고 하는데 사실 이 부분을 제대로 이해 하지 못했다. 아마도 php는 어떻게 돌아가는지 잘 몰라서 그런다고 생각든다.

WAS = Web Server + Web Container > 정적 페이지 처리 + 동적 페이지 처리를 모두 할 수 있다.

아파치 톰캣

톰캣에서 아파치의 일부 기능(웹 서비스 데몬, Httpd)등을 포함하고 있기 때문에 아파치 톰캣이라고 부른다. 아파치 (포트 80) - http 기본 포트 80 톰캣 (포트 8080) - 실제로 http 포트는 80포트이므로 8080포트로는 아파치 웹서버가 알아서 보내줌.

사용 방법

톰캣만 사용 가능
아파치만 사용 가능
아파치 톰캣으로 연동해서 사용 가능

 

그냥 WAS(Tomcat)만 사용하면 되지 웹 서버(Apache)가 필요한가요?

WAS의 부담을 줄이기 위함이다. 웹 서버를 WAS의 앞에 둬서 정적인 문서만 처리하도록 하고, WAS는 애플리케이션 로직만 수행하도록 기능을 분배하여 서버의 부담을 줄이도록 한다.

 

클라이언트 요청 포트와 WAS가 직접적으로 연결되어있다면 중요한 설정 파일들이 노출 될 수 있다. 보안상의 이유로 웹 서버는 노출을 시켜서 아무나 접속 가능하게 하지만 servlet을 처리하는 WAS의 경우 아무나 접근하지 못하게 IP 차단하고 웹 서버 IP만 WAS에 통신이 되게 함으로 DB 관련 접근을 Web Server에서 하지 않고 WAS에서 실행하게 한다.

물리적으로 웹 서버와 WAS 서버를 따로 놓는다.

 

단순한 사이트만 돌리게 된다면 Tomcat 하나만 돌리면 되지만 여러 사이트들을 하나의 서버에 연결시켜서 컨트롤 해야 하는 경우에는 Tomcat에서는 해당 기능을 제공하지 않는다.

 

https://itwarehouses.tistory.com/12

 

Apache HTTPD to Tomcat, 로드 밸런싱(Load Balancing)

개요 이번 글에서는 Apache HTTPD와 Tomcat 간의 로드밸런싱 방법에 대해서 설명한다. 로드밸런싱은 고가용성을 위해 Apache와 Tomcat을 1:N 또는 N:N 방식으로 연결하여 Request를 분산 처리하며, 하나의 톰

itwarehouses.tistory.com

이런 식으로 Apache Httpd 서버와 Tomcat 간의 1:N 설정을 해줄 수 있다.

 

로드 밸런싱이란  하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하들을 분산처리하여 해결해주는 서비스이다. 특정 서버에서 에러/과부화가 발생한 경우 다른 서버에서 정상적으로 서비스를 하도록 해준다.

300x250

댓글