우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미
웹서버는 하드웨어와 소프트웨어 두 분야에서 다른 의미로 부른다.
웹 서버 소프트웨어와 웹 사이트의 구성 요소 파일을 저장하는 컴퓨터를 의미한다.
(예 : HTML 문서, 이미지, CSS 스타일 시트 및 JavaScript파일)
보통 HTTP 서버를 의미한다.
HTTP 서버는 URL(웹주소) 및 HTTP(프로토콜 주소)를 이해하는 소프트웨어이다.
HTTP 서버는 저장하는 웹 사이트의 도메인 이름을 통해 액세스 할 수 있으며 이러한 호스팅 된 웹 사이트의 콘텐츠를 최종 사용자의 장치로 전달한다.

브라우저는 웹 서버에서 호스팅 되는 파일이 필요할 때마다 HTTP를 통해 브라우저에 파일을 요청한다.
요청이 올바른 웹서버(하드웨어)에 도달하면 HTTP서버(소프트웨어)가 요청을 수락하고 요청된 문서를 찾은 다음에 HTTP를 통해 브라우저로 다시 보낸다.
(서버가 요청된 문서를 찾지 못하면 대신 404 응답을 반환하게 된다.)
결국 아파치서버란 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버를 의미한다.
이는 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장한 것 같다.
톰캣 WAS(web application server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너로도 불림)
톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈소스로 개발이 되고 있다.
JAVA EE 기반으로 만들어졌으며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
아파치서버와는 다르게 DB연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을 사용할 수 있다.
동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스.
java.servlet.package에 정의된 인터페이스로서 서블릿의 라이프 사이클을 위한 세 가지 필수적인 메소드들을 정의한다.
DB 처리, 로직 처리를 요구하는 동적타입을 제공하는 소프트웨어 프레임워크를 의미한다.
WAS는 웹서버 + 서블릿 컨테이너 ( 웹 컨테이너 ) 로 구성되어 있다.
기본적으로 사용되는 기능 3가지는 아래와 같다.
1. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
2. 여러 개의 트랜잭션을 관리한다.
3. 업무를 처리하는 비즈니스 로직을 수행한다.

기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.
| 장점 | 단점 |
|---|---|
| Apache | 처리 속도가 빠르다. 구조가 단순하여 비용절감. 트래픽 과부하에 강하다. 정적인 데이터만 처리가 가능하다. 다른 서비스와 상호작용이 불가하다. |
| Tomcat | 데이터 흐름이 유동적이다. DB 등 여러 서비스가 가능하다. 아파치에 비해 속도가 느리다. 부가적인 비용이 발생한다. 트래픽 과부하에 약하다. |
웹페이지는 정적 데이터뿐만 아니라 동적 데이터도 함께 존재한다. 톰캣은 was서버이지만 web서버의 기능도 갖추고 있다. 하지만 아파치 웹서버보다 느린 처리속도를 제공하기 때문에 모든 데이터를 톰캣으로만 처리한다면 응답이 엄청 느려지게 될 것이다. 그래서 정적 데이터는 아파치가 동적 데이터는 톰캣이 분산 처리한다.
출처
https://velog.io/write?id=bd1d08ad-352c-4ee7-89cd-7f85842a3815
https://velog.io/@remon/%EA%B0%9C%EB%B0%9C-%EA%B8%B0%EB%B3%B8-%EC%A7%80%EC%8B%9D-WEB%EC%95%84%ED%8C%8C%EC%B9%98%EA%B3%BC-WAS%ED%86%B0%EC%BA%A3-%EC%B0%A8%EC%9D%B4