[AWS] Web Server(웹서버, 아파치) 와 WAS(톰캣) 이해하기


Web Server(웹서버) 란?

Web Server(웹서버)를 알기전, 정적 페이지(Static Pages), 동적 페이지(Dynamic Pages)에대 해서 이해해야 한다.


정적 페이지(Static Pages)


  • Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.

  • 항상 동일한 페이지를 반환한다.

  • Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들


동적 페이지(Dynamic Pages)


  • 인자의 내용에 맞게 동적인 contents를 반환한다.

  • 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 * Servlet: WAS 위에서 돌아가는 Java Program

  • 개발자는 Servlet에 doGet()을 구현한다.


Web Server의 개념

소프트웨어와 하드웨어로 구분된다.

  • 하드웨어 : Web 서버가 설치되어 있는 컴퓨터

  • 소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램

Web Server의 기능

  • HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당한다.

  • 기능 1)
    • 정적인 컨텐츠 제공
    • WAS를 거치지 않고 바로 자원을 제공한다.
  • 기능 2)
    • 동적인 컨텐츠 제공을 위한 요청 전달
    • 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다.
    • 클라이언트는 일반적으로 웹 브라우저를 의미한다.


Web Server 종류

  • Apache Server(아파치)
  • Nginx
  • IIS(Windows 전용 Web 서버) 등


Web Server 단점

  • JSP나 PHP같은 응용 프로그래밍 언어를 해석할 수 없음.
  • 이러한 단점을 극복하기 위해
  • Java 기반 서버 사이드 언어를 처리할 수 있는 엔진을 개발함 -> WAS(Web Application Server)인 Tomcat 탄생



WAS(Web Application Server)

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server.

HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.

“웹 컨테이너(Web Container)” 혹은 “서블릿 컨테이너(Servlet Container)”라고도 불린다.

  • Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다.
  • 즉, WAS는 JSP, Servlet 구동 환경을 제공한다.


WAS(Web Application Server) 의 역할

  • WAS = Web Server + Web Container
  • Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다.
  • 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
  • 주로 DB 서버와 같이 수행된다.
  • 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.


WAS(Web Application Server) 의 종류

  • Tomcat
  • JBoss
  • Jeus
  • Web Sphere 등


Tomcat(톰캣) 이란?

동적인 데이터를 처리, DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우에 사용,Apache Tomcat(이하 Tomcat) 은 JSP페이지의 실행환경을 제공하는 웹 어플리케이션 서버(WAS).

  • 톰캣은 ‘WAS(Web Application Server)’라고 해서 자바코드를 이용해 HTML페이지를 동적으로 생성해주는 프로그램

  • WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버

  • 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다서 클라이언트에 전달해주는 역할을 하는 것이 웹 컨테이너

  • 아파치와 톰캣은 컨테이너 기능이 가능하냐 하지 않느냐의 차이가 있음

  • 톰캣 6버전 이상부터는 조금씩 웹서버의 기능이 추가되어서 현재는 톰캣만 설치해도 어느정도의 웹서버 역할이 가능.

  • 아직도 많은 JSP를 사용하는 웹 프로그래머들은 아파치 + 톰캣을 병행해서 사용. 그 이유는 정적 데이터를 처리할 때 아파치의 성능이 더 좋음. 

  • 톰캣도 좋아지고 있지만, 이미지나 CSS같은 정적 데이터는 아파치에서 처리하고, 톰캣은 본 목적인 동적 페이지 생성에 주력하는게 효율면에서 좋다고 생각.

  • 다른 언어 도입에 아파치 사용이 불가피. 예를들어 프로젝트 개발 인원이 JSP개발자와 PHP개발자가 있을때 톰캣만 사용중이라면 PHP개발자는 필요가 없어지게 됨 하지만 아파치+톰캣 구조에서는 PHP를 설치하고 아파치에 연결하면 여러 서버 사이드 언어로 작성이 가능.


Reference