Apache와 Tomcat

Kang Dong Hyun·2023년 1월 13일
0

Apache란?

우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미하는 데
이는 오픈 소스 소프트웨어 그룹인
아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 만든 웹서버 프로그램이다.
1998년 6월에 처음 세상에 공개가 되었고,
오픈소스를 통해 많은 개발자들에 의해 개발이 이루어졌으며, 이루어져가고 있는 상태이다.

결국 아파치서버란 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버를 의미한다.
이는 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장한다.

Tomcat이란?

톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈소스로 개발이 되고 있다.
JAVA EE 기반으로 만들어졌기에 자바를 설치해야 하며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
아파치서버와는 다르게 DB연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을
사용할 수 있다.
이런 동적인 처리를 담당하는 서버를 WAS(Web Application Server)라고 하는데 대표적인 WAS가 바로 톰캣이다.

컨테이너(container)

동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈

서블릿(servlet)

클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스

서블릿 컨테이너(servlet container)

서블릿들을 모아 관리
새로운 요청이 들어올 때마다 새로운 스레드를 생성
작업이 끝난 서블릿 스레드 자동 제거

Apache와 Tomcat의 차이

아파치 서버 - 정적인 파일 처리해주는 웹 서버 (80 포트)
톰캣 - DB처리와 같은 동적인 기능들을 가공하여 HTML파일로 만들어 클라이언트에게 제공(8080 포트)

Apache Tomcat

기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만, 톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.

왜 아파치와 톰캣을 연동할까?

웹서버 없이 WAS만 사용한다고 가정해보자.
웹페이지에는 정적 data뿐만 아니라 동적 data도 함께 존재한다.
톰캣은 WAS서버이지만 WEB서버의 기능도 갖추고 있다.
하지만 톰캣의 웹서버기능은 아파치 웹서버보다 느린 처리속도를 보였고, 웹의 모든 정적/동적 데이터를 모두 WAS가 처리한다면 결과적으로 사용자의 요청의 응답이 느려지게 될 것이다.
때문에 정적 데이터는 웹서버인 아파치가 처리하고 동적 데이터는 WAS인 톰캣이 처리함으로써 서버의 전체적인 부하를 분산하고 속도를 빠르게 하기 위해 연동해서 사용하는 것이다.

아파치와 톰캣 연동 동작

  1. 아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정한다.
  2. 사용자의 브라우저는 아파치 웹서버에 접속하여 요청한다. (통상 80 port )
  3. 아파치 웹서버는 사용자의 요청이 들어왔을때, 이 요청이 톰캣에서 처리되도록 지정된 요청인지 확인한다.
  4. 톰캣에서 처리해야하 하는 경우 아파치 웹서버는 톰캣의 AJP 포트(통상 8009 port) 에 접속해 요청을 톰캣에게 전달한다.
  5. 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 다시 아파치 웹서버에게 돌려준다.
  6. 아파치 웹 서버는 톰캣으로 전달받은 처리 결과를 사용자에게 전송한다.
profile
초보개발자의 스터디공간

2개의 댓글

comment-user-thumbnail
2023년 1월 16일

진짜 괴물이시네요

1개의 답글