아파치? 톰캣?

아파치, 톰캣에 대해서 알아보자.

결론은 아파치 톰캣은 아파치 S/W 재단에서 개발한 서블릿 컨테이너만 있는 web application server이다.

  • 웹 서버가 바로 1995년에 등장한 아파치 서버이다. 다른 웹 서버는 Nginx, GWS, IIS등이 있다.

  • 톰캣은 WAS 역할을 담당한다.

  • 아파치 톰캣이 WEB + WAS이다.

Web Server(웹 서버)

웹 서버는 브라우저와 같이 Client로부터 HTTP 요청을 받고, HTML 문서와 같은 정적 웹 페이지를 반환하는 컴퓨터 프로그램을 웹 서버라고 한다. 웹 서버는 정적인 자료를 처리하는 서버이다. html, css, image와 같이 내용이 변하지 않는 정적 파일들을 생성해준다.

서버에 페이지를 요청하면 서버는 해당 화면을 클라이언트에게 html 파일로 보내준다. 이처럼 서버에 정적 파일을 저장하고 클라이언트에서 요청이 생길 때마다 서버에 저장된 파일을 보내주면 서버 자원의 한계가 생기고 리소스를 많이 차지하는 단점이 있다. 이를 보완한것이 동적으로 파일을 처리하는 WAS 서버이다.

즉, 웹 서버는 HTTP 프로토콜을 기반으로 동작하며, 클라이언트로부터 HTTP 요청을 받아 정적 리소스를 제공한다.

WAS(Web Application Server)

WAS는 동적인 데이터를 처리하는 서버이다. 기존 웹 서버의 단점을 보완하여, Servlet Container가 추가되었고, 클라이언트에서 요청을 보내면 서블릿 컨테이너가 요청 정보를 파악해서 실시간으로 페이지에 필요한 파일을 생성한다. 요청이 올 때에만 정보를 생성하기 때문에 불필요한 리소스를 줄일 수 있다.

따라서 WAS는 웹 서버의 기능에 더해 동적인 컨텐츠를 처리할 수 있는 애플리케이션 서버이다.

  • 서블릿 컨테이너를 포함하여 동적 처리가 가능하다.

  • DB 연동, 비즈니스 로직 처리 등 복잡한 작업을 수행할 수 있다.

모든 WAS가 서블릿 컨테이너는 아니다. 하지만 반대로 서블릿 컨테이너면 WAS이다.

WAS 중에서 '자바 서블릿'을 지원하는 서버를 '서블릿 컨테이너'라고 부르기도 한다.

또한, WAS라고 잘 알려진 '톰캣'은 내부적으로 웹 서버의 기능을 포함하고 있다. 즉, 별도의 웹 서버(아파치 웹 서버, Nginx) 없이도 톰캣(WAS)을 통해 정적 자원을 처리하는 웹 서버 역할을 수행할 수 있다.

처리 순서 : client -> web server -> was -> web server -> client

웹 서버와 WAS의 차이

Web Server와 WAS의 차이는 Web Container의 유무로 나눌 수 있다.

즉, 웹 서버의 목적은 정적인 데이터, image, html, css와 같은 리소스를 처리하기 위한 서버이고, WAS는 동적인 데이터, 예를들어 DB와 연결되어 데이터를 가공하는 프로그램은 WAS를 활용해서 동적인 처리를 하는것이 효율적이다.

  1. 주요 기능

    1. 웹 서버: 정적 리소스 제공

    2. WAS: 동적 컨텐츠 처리 및 애플리케이션 로직 실행

  2. 컨테이너 유무

    1. 웹 서버: 컨테이너 없음

    2. WAS: 웹 컨테이너(서블릿 컨테이너) 포함

  3. 리소스

    1. 웹 서버: 미리 저장된 리소스를 활용

    2. WAS: 요청 시 동적으로 생성

Tomcat (WAS의 예시)

톰캣은 Java 코드로 구현되었고 서블릿이라는 최상위 인터페이스를 참조하고 있다. 톰캣에 request가 오면 추가적으로 내장하고 있는 웹 서버에 정적인 페이지를 요청하고 동적 데이터가 필요한 경우 서블릿에게 책임을 위임한다.

Spring 프레임워크의 경우, 서블릿 인터페이스를 구현한 디스패처 서블릿은 HTTP 요청을 받아 적절한 컨트롤러에 위임하는 프론트 컨트롤러 역할을 수행한다.

서블릿 컨테이너는 무엇입니까...

Servlet과 Servlet Container

Last updated