본문 바로가기
개념/Study

웹 서버 (Web Server) 와 WAS (Web Application Server) 의 차이

by Hwanii_ 2023. 11. 17.
728x90

Web Server (웹 서버)

 

웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저 에서 어떤 요청을 하면,

그 요청을 받아서 정적 컨텐츠를 제공 하는 서버를 의미 한다.

 

정적 컨텐츠란 단순 HTML 문서 / CSS / 이미지 / 파일 등등 즉시 응답이 가능한 컨텐츠를 의미 한다.

 

만약에 웹 서버가 정적 컨텐츠가 아니라, 동적 컨텐츠를 요청 받으면 WAS 에게 해당 요청을 넘겨 준다.

그러면 WAS 는 동적 컨텐츠 요청을 처리 하고,

해당 요청에 대한 결과 값을 웹 서버 (Web Server) 가  클라이언트에게 전달 해주게 된다.

 

정리하자면,

웹 서버는 정적 컨텐츠를 제공 해주는 서버 이고,

WAS 가 처리한 동적 컨텐츠의 결과 값을 클라이언트에게 전달 해주는 역할도 한다.

 

 

 

WAS (Web Application Server)

 

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

 

HTTP 프로토콜을 기반으로 사용자 컴퓨터 또는 특정 장치에 애플리케이션을 수행해주는 미들 웨어 이다.

 

주로, 데이터베이스 서버와 같이 수행 된다고 보면 된다.

 

WAS 는 JSP 와 Servlet 구동 환경을 제공 해주기 때문에, 서블릿 컨테이너 또는 웹 컨테이너 라고 불린다.

 

WAS는 웹 서버의 기능을 구조적으로 분리 하여 처리하고자 하는 목적으로 처음 제시 되었다.

 

분산 트랜잭션 / 보안 / 메세징 / 스레드 처리 등의 기능을 처리 하는 분산 환경에서 사용 된다.

 

WAS 는 프로그램 실행 환경 및 DB 접속 기능을 제공 하고, 여러 개의 트랜잭션을 관리 할 수 있다.

당연히 비즈니스 로직을 수행 할 수 있다.

 

WAS 로는 익숙한 Tomcat 이 있고, 그 외에 JBoss, WebSphere 등 이 존재 한다.

 

그래서, Tomcat 이 서블릿 컨테이너의 역할을 한다는 것의 이유가 된다.

 

정리하자면, 

WAS는 Web Server 와 Web Container (서블릿 컨테이너) 의 역할을 모두 할 수 있다.

서블릿 컨테이너는 JSP 와 Servlet 을 실행 시킬 수 있는 소프트 웨어 라고 위에서 정리했었는데,

WAS는 비록 Web Server (웹 서버) 의 역할을 할 수 있지만, 웹 서버의 기능 까지 모두 수행 하게 하진 않는다.

즉, 웹 서버와 WAS 는 분리 해야 한다. 

 

그 이유는 다음과 같다.

 

1) 서버 부하 방지

WAS 와 Web Server 을 분리를 하지 않으면 서버에 부하가 발생 할 수 있다.

다시 말해서 WAS 와 Web Server 을 분리해서 서버의 부하를 방지 해야 한다.

 

WAS는 동적 컨텐츠를 제공 하기 위한 어플리케이션 이라고 했었기에, 

DB 조회 및 다양한 비즈니스 로직을 처리 한다.

 

따라서, 단순한 정적 컨텐츠는 Web Server 에서 처리해줘야 한다.

 

만약에 정적 컨텐츠도 WAS 가 처리 하게 되면 서버의 부하가 커질 수 밖에 없게 된다.

이는 수행 속도가 저하 된다는 것이다.

 

2) 보안 강화

SSL 에 대한 암호화 및 복호화 처리는 Web Server로 가능 하다.

 

3) 여러 개의 WAS 연결 가능

로드 밸런싱 (Load Balancing) 을 위해 Web Server 을 이용 할 수 있다.

여러 개의 서버를 사용하는 대용량의 어플리케이션의 경우, 웹 서버와 WAS를 분리 하고,

서버가 멈추지 않는 무중단 운영을 위한 장애 극복에 쉽게 대응 할 수 있게 된다.

 

4) 여러 웹 어플리케이션 서비스 가능

하나의 서버에서 JAVA / PHP 어플리케이션을 함께 사용 할 수 있다.

 

이러한 이유로 Web Server을 WAS 앞에 두고 필요한 WAS 들을 웹 서버에 플러그인 형태로 설정 하게 되면,

효율적인 분산 처리를 할 수 있게 된다.

 

 

 

3. Web Service Architecture

 

Reference : code-lab1.tistory.com/199

 

위의 이미지는 웹 서비스를 나타낸 Web Service Architecture (웹 서비스 설계 방식) 이다.

 

Client >> 웹 서버 >> WAS >> DB 

 

의 흐름으로 설계된 아키텍처 이다.

 

클라이언트가 웹 서버에 HTTP 요청을 보내면, 웹 서버는 정적 컨텐츠 요청에 대해서는 바로 응답 한다.

만약 동적 컨텐츠 요청이 들어오면, 그것은 WAS 가 받아서 처리 하게 된다.

처리 결과를 웹 서버가 WAS 에게 받아서, 다시 클라이언트 에게 응답 하게 된다.

반응형