본문 바로가기
WORKS/Java + JSP + Spring

[Server] Tomcat vs WAS | Web Server와 WAS | 정적컨텐츠 동적컨텐츠

by Jelly 젤리 2022. 2. 10.

 

Tomcat과 WAS의 차이점을 알아보자.

 

야옹.


WAS(Web Application Server)

- 개념

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

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

Web Container 혹은 Servlet Container라고도 불린다.

(Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. 다시 말해 내부의 프로그램을 통해 결과를 만들어내고 다시 클라이언트에 전달해주는 역할을 한다)

 

-역할

웹 서버 + 웹 컨테이너 두가지가 합쳐진 것

Web Server 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시됨(분산환경에서 / 주로 DB 서버와 같이 수행된다. DB가 아니라 DB 서버.)

 

-기능

프로그램 실행 환경과 DB 접속 기능 제공

여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능

업무를 처리하는 비즈니스 로직 수행

기본적으로 웹 서버 역할을 함께 수행할 수 있다.

 

-예

Tomcat, JBoss, Jeus, Web Shpere 등

@Apache Tomcat 은 WAS서버의 한 종류다@


정리:

Tomcat이 WAS 서버의 한 종류이다.

특징적인 부분은 WAS 서버의 다른 예시와 달리
톰캣 자체에 내장으로 Web Server가 존재해서
단독으로 정적 데이터와 동적데이터의 처리가 가능.

(아파치톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에 보통 아파치 톰캣으로 합쳐서 부른다.)


여기서 Web Server란?

정적 컨텐츠를 요청에 따라 전달해주는 역할을 한다.

-개념

하드웨어적: Web Server 가 설치되어 있는 컴퓨터

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

 

-기능

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

1. 정적 컨텐츠 제공, WAS를 거치지 않고 바로 자원 제공

2. 동적 컨텐츠 제공을 위한 요청 전달(클라이언트의 Request를 WAS에 보내고 / 그 요청으로 WAS에서 처리한 결과를 클라이언트에게 Response) - 클라이언트는 일반적으로 웹 브라우저를 의미

 

-예

Apache Server, Nginx, IIS(Windows 전용 Web Server)


WAS와 비교하였을 떄 가장 큰 차이점

 

WAS: 사용자의 요청에 따라 서버에서 프로그램을 실행 및 처리 후 다시 정적인 페이지로 변환해 반환하는 등의 동적인 처리를 하는 역할.

 

Web Server: 정적 컨텐츠를 요청에 따라 전달만 해주는 역할.


아래는 추가적으로 궁금한 개념 정리

 

+++

정적 컨텐츠

있는 그대로의 것을 제공하는 것

ex> 서버에서 '코끼리.jpg' 의 이미지를 보여주는 웹페이지가 있을 때 코끼리 사진을 그대로 보여주는 것

 

동적 컨텐츠

서버가 컨텐츠를 처리하여 제공하는 것

ex> 사용자와 상호작용하며 때에 따라 다른 데이터를 보여주는 웹페이지

 

+++

Web Container(웹 컨테이너)

- 개념

Servlet, JSP를 실행할 수 있는 소프트웨어 (서블릿 컨테이너라고도 한다)

- 역할

웹 서버에서 JSP를 요청하면 웹컨테이너에서는 JSP파일을 서블릿파일로 변환한 뒤 컴파일하여 이것을 실행한 결과를 웹 서버에 전달한다.

 

+++

WAS 서버와 웹 서버는 항상 같이 있어야 사용이 가능하다. 각각 단독으로 불가.

 

+++

Web Application Server의 동작과정

1. 웹 서버를 통해 필요한 페이지를 요청받는다.

2. Container가 web.xml(배포서술자)를 참조하여 스레드를 생성하고 요청 및 응답 객체(HttpServletRequest, HttpServletResponse)를 생성하여 스레드에게 전달

3. 스레드 및 요청, 응답 객체 생성을 완료했다면 Container는 사용자의 요청에 맞는 Servlet을 호출(service()).

4. 호출된 Servlet의 요청을 담당하는 thread가 요청에 따라 doGet(), doPost()를 호출

5. 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response객체에 실어 Container에게 전달

6. Container는 전달받은 Response객체를 HttpResponse형태로 전환하여 웹서버에 전달하고 생성되었던 스레드를 종료하고 요청 및 응답 객체를 소멸


참고: 톰캣 설치 페이지

https://tomcat.apache.org/

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

tomcat.apache.org

 

 

갈 길이 멀다.



공부하면서 정리하는 블로그입니다.

혹시라도 잘못되었거나 수정할 부분이 있으면 댓글 남겨주시는대로 업데이트 하겠습니다!

728x90

댓글