본문 바로가기

DEVELOP_NOTE/그 외

[WEB&WAS]WEB서버와 WAS에 대해서 알아보자

오늘은 

WEB서버와 WAS서버를 각각 정의하고, 차이점과 활용방식에 대해 간단히 정리하고자 한다.

 

 

WEB(Web Server)이란?

작성된 HTML페이지등을 네트워크망에 종속되지 않고, 웹서비스를 할 수 있도록 하는 어플리케이션으로, 소프트웨어와 하드웨어로 이루어진 서버로 구분될 수 있고 WEB서버는 '정적 파일'을 처리하는데 중점을 두는 서버이다.

여기서 '정적파일'이라 함은 HTML, CSS, JavaScript, 이미지와 같이 정의된 내용의 파일을 포함한다.

그리고, 웹서버는 클라이언트의 요청을 받아 해당 요청에 따라 정적파일을 반환한다. 

 

(1) 소프트웨어 웹서버 : 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고, HTML문서(정적파일 처리)등을 내용에 따라처리하고 반응하는 컴퓨터 프로그램

(2) 하드웨어 웹서버 : 위 언급된 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터를 의미 

 

 

 

 

WAS(Web Application Server)란?
: WEB서버 + WEB컨테이너

 

WAS는 반대로 '동적컨텐츠'를 처리하는데 중점을 둔 서버이다.

이는 서버 측 스크립트와 데이터베이스를 활용하여 "클라이언트의 요청에 따라 동적으로 생성된 웹페이지를 제공하는것"을 포함한다.

 

 

WAS WEB Server
tomcat, tMax jeus, BEA Web Logic, IBM Webspere, JBOSS, Bluestone, Gemston, insprise, Oracle, PowerTier, Apptivity, silverStream IIS, apache, tMax, WebtoB

 

클라이언트 - web server - WAS 의 구조를 표현

 

 

두 서버의 처리방식은?

1) WEB서버

웹서버는 HTTP프로토콜을 사용하여 클라이언트 요청을 처리하고, 정적파일을 반환한다. 

웹서버는 동적 콘텐츠 처리에 필요한 '추가 리소스'나 '런타임 환경'을 제공하지 않는다.

 

2) WAS 

WAS는 WEB서버의 기능과 함께, 동적 콘텐츠 처리를 수행한다.

이를 통해 서버 측 로직을 수행하고, 데이터베이스에 액세스하며, 사용자 인터페이스를 동적으로 생성할 수 있다.

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

웹서버 + 웹컨테이너로 웹 상에서 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버이다.

-> 기본기능

* 프로그램 실행 환경과 데이터베이스 접속기능을 제공한다.

* 여러개의 트랜잭션을 관리한다.

* 업무를 처리하는 비즈니스 로직을 수행한다(동적 콘텐츠 처리 담당)

* Web service 플랫폼으로서의 역할

 

 

 

 

 

3) 통합 구성(일반적인 사용방식)

일반적으로는 웹 애플리케이션의 성능과 보안을 개선하기 위해서 WEB서버와 WAS를 함께 사용하는 경우가 많다.

웹 서버는 정적콘텐츠(HTML, CSS, JavaScript, 이미지)를 처리하고, 동적요청(DB를 참조하는 등의 비즈니스 로직)을 WAS로 전달한다. 이렇게 구성하면 웹 서버가 정적파일처리에 최적화되고, WAS는 동적 콘텐츠 처리에 집중할 수 있어 전체적인 성능 향상이 가능하다.

 

예를들면, NginX와 Django를 사용할때, Nginx는 Web서버의 역할을 하고 Django는 WAS의 역할을 한다고 가정한다.

두개의 서비스는 별개의 프로세스로 실행되며, Nginx는 동적 요청(비즈니스로직)을 Django로 프록시 한다.이때, WAS(Django)로 요청을 전달하는것은 프록시 또는 리버스 프록시를 사용하여 HTTP 프로토콜을 통해 전달하며, 당연히, WEB서버는 WAS의 IP와 port를 통해 header와 body의 형태로 요청을 전달하게 된다. 

 

 

 

결론



WEB & WAS 통합 구동방식

쉽게 정리하면, WEB container의 유무로 WEB server와 WAS를 구분할 수 있고,

WEB server는 HTML, CSS, 이미지와 같은 정적 파일을 읽는데 특화된(빠른) 서버라고 할 수 있고,

WAS는 정적 파일 처리는 WEB보다 느리고 비효율적이며, 동적컨텐츠(비즈니스로직)처리에 특화된 서버로 이해할 수 있다.

 

우리가 사용하는 웹페이지는 정적파일과 동적 컨텐츠가 함께 동작해야하는데, 

WEB(정적파일읽기)과 WAS(동적컨텐츠, 로직처리)에게 각각 잘하는 task를 처리하도록 하여야, 성능을 극대화 할 수 있다.

진행원리는 사용자가 클라이언트(브라우저)에 요청하게 되면, 이를 웹서버에서 반응하여 WAS의 처리를 거쳐 웹페이지로, 

다시 웹서버에서 클라이언트(브라우저)에 응답메세지를 주는 방식으로 처리하게 된다.

 

 

추가적으로, JSP를 배울때, 대체적으로 Apache와 Tomcat을 사용한다.

ASP를 구동하기 위해서는 IIS를 사용한다.

ASP의 환경이 MS계열 서비스라면, WAS의 기능을 담당하는 부분이 있어 별도로 WAS가 필요하지 않다.

 

 

 

 

WAS와 WEB서버 사용방식별 장단점

 

1) WAS와 Web Server를 분리하지 않는 경우

모든 컨텐츠를 한곳에 집중시켜 웹서버와 WAS의 역할을  동시에 수행, 

스위치를 통한 로드 밸러싱으로 처리

-> 사용자가 적을 경우 효율적

 

2) WAS와 Web Server를 분리한 경우

웹서버와 WAS의 기능적 분류를 통해 효율적인 분산을 유도,

정적인 데이터는 웹서버에서, 동적인 데이터는 WAS에서 처리

 

3) WAS 여러개와 Web Server를 분리한 경우

WAS단을 프리젠테이션 로직과 비즈니스 로직으로 구분하여 구성.

특정 logic의 부하에 따라 적절히 대응할 수 있지만, 설계단계와 유지보수 단계가 복잡해질 수 있다.

 

 

[ WAS와 Web Server를 분리하는 이유 ]

1) 기능을 분리하여 서버의 부하 방지

2) 물리적으로 분리하여 보안강화

3) 여러대의 WAS를 연결가능(로드밸런싱의 역할 및 fail over, fail back 처리에 유리)

4) 여러 웹어플리케이션을 서비스 가능(java 서버, c#서버, php서버 등 하나의 웹서비스를 통해 서비스 가능)

 

 

 

* 참고

https://helloworld-88.tistory.com/71