본문 바로가기

웹 개발/개념 정리

[Java 웹개발] 웹 서버, 웹 컨테이너, 애플리케이션 서버, 웹 애플리케이션 서버(WAS)란

수정이력 

2022-08-07 불필요한 표현 정리


 

 

웹 서버, 웹 컨테이너, 애플리케이션 서버, 웹 애플리케이션 서버(WAS)... 명칭들이 비슷하다.

이참에 확실하게 정리해본다

 

 

1. 웹 애플리케이션 (Web Application)

사용자가 웹에 접속해 간접적으로 실행시키는 프로그램이다. 반대는 데스크톱 애플리케이션이다. 데스크톱 애플리케이션은 사용자 pc에 설치되어 인터넷 서비스가 필요한 게 아니라면 웹이 필요하지 않다.

 

2. 웹 서버 (Web Server)

웹 서버는 정적인 페이지를 클라이언트에게 전송하는 역할을 수행하는 서버이다. 클라이언트(사용자)가 특정 페이지(url)를 요청하면, 주소에 미리 매핑되어 있는 콘텐츠(html, jpg, mp3... )를 클라이언트 브라우저에 전송한다.

 

3. 웹 컨테이너 (Web Container)

웹 컨테이너는 웹 서버 보다 정교한 역할을 수행한다. 동적인 페이지를 클라이언트에게 전송하기 때문이다. 요청을 받으면

1) 내부 로직을 수행하고, 2) data를 가공, 처리, 보관하는 등의 기능을 수행할 수 있다.

 

3-1) 서블릿 컨테이너

 java 기반 서버를 서블릿 컨테이너라고 부른다. 자바로 웹을 구현시 url 매핑과정에서 서블릿을 사용하기 때문이다. 서블릿 컨테이너는 웹 서버의 내부에서 서블릿(servlet) 클래스 또는 jsp파일을 실행하기 위한 환경을 제공한다.

 

3-2) 서블릿 컨테이너의 세부적인 역할

서블릿 객체를 생성(load)해 객체가 소멸(unload)할 때까지, 생명주기(init, service, destroy)동안 서블릿을 관리하는 역할을 한다. Apache Tomcat 이 대표적인 서블릿 컨테이너이다.

 

4. 애플리케이션 서버 (Application Server)

웹 컨테이너에서 확장된 것이 애플리케이션 서버이다. (웹 컨테이너 + α = 애플리케이션 서버)

Java 기준으로 보자면, 서블릿 컨테이너는 servlet, jsp, jstl 등에 집중된 환경을 제공한다. (자바로 웹 구현이 되도록 필요한 기능에 집중했다). 애플리케이션 서버는 서블릿, jsp, jstl에 더해 좀더 기능이 추가되어 통합적인 환경을 제공한다.

 

아래는 자바 애플리케이션 서버에서 제공되는 기능이다.

  • JDBC(Java Database Connectivity)
  • EJB(Enterprise JavaBean)
  • JNDI(Java Naming and Directory Interface)
  • JTA(Java Transaction Interface)

 

5. 웹 애플리케이션 서버 (Web Application Server)

웹 기술을 기반으로 동작하는 애플리케이션 서버를 웹 애플리케이션 서버라고 한다. 보통 줄여서 WAS라고 부른다. 특히, 자바에서의 WAS란 Java EE 사양을 준수하여 만든 서버를 의미한다. 웹 컨테이너보다는 애플리케이션 서버에 가깝다고 보면 되겠다.

 

 

덧붙이기

자바로 웹 애플리케이션을 개발한다 = '서블릿, JSP 기술을 사용하여 애플리케이션을 개발한다' 라고 이해하면 된다.