우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미하는 데
이는 오픈 소스 소프트웨어 그룹인
아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 만든 웹서버 프로그램이다.
1998년 6월에 처음 세상에 공개가 되었고,
오픈소스를 통해 많은 개발자들에 의해 개발이 이루어졌으며, 이루어져가고 있는 상태이다.
결국 아파치서버란 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버를 의미한다.
이는 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장한다.
톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈소스로 개발이 되고 있다.
JAVA EE 기반으로 만들어졌기에 자바를 설치해야 하며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
아파치서버와는 다르게 DB연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을
사용할 수 있다.
이런 동적인 처리를 담당하는 서버를 WAS(Web Application Server)라고 하는데 대표적인 WAS가 바로 톰캣이다.
동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스
서블릿들을 모아 관리
새로운 요청이 들어올 때마다 새로운 스레드를 생성
작업이 끝난 서블릿 스레드 자동 제거
아파치 서버 - 정적인 파일 처리해주는 웹 서버 (80 포트)
톰캣 - DB처리와 같은 동적인 기능들을 가공하여 HTML파일로 만들어 클라이언트에게 제공(8080 포트)
기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만, 톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.
웹서버 없이 WAS만 사용한다고 가정해보자.
웹페이지에는 정적 data뿐만 아니라 동적 data도 함께 존재한다.
톰캣은 WAS서버이지만 WEB서버의 기능도 갖추고 있다.
하지만 톰캣의 웹서버기능은 아파치 웹서버보다 느린 처리속도를 보였고, 웹의 모든 정적/동적 데이터를 모두 WAS가 처리한다면 결과적으로 사용자의 요청의 응답이 느려지게 될 것이다.
때문에 정적 데이터는 웹서버인 아파치가 처리하고 동적 데이터는 WAS인 톰캣이 처리함으로써 서버의 전체적인 부하를 분산하고 속도를 빠르게 하기 위해 연동해서 사용하는 것이다.
진짜 괴물이시네요