Tech

Web Server와 WAS(Web Application Server)

onesixx 2010. 4. 6. 16:57
반응형

웹 서버와 WAS는 비슷한 개념이라 그런지 같이 또는 다르게 사용되는 단어 가운데 하나이다. 인터넷이 확산될 당시만해도 웹 서버라는 개념으로 통칭해서 사용했지만, 시간이 지남에 따라 WAS를 더 많이 사용하게 되었다. 이제는 사용자에 따라, 또는 상황에 따라 똑같은 제품이 웹서버로 불리기도 하고 WAS라고 불리기도 한다.

 

두 개념 사이의 근본적이 차이점이 무엇인지 알아보자.

Web Server와 WAS의 정의

Web Server

• Web Client(웹 브라우저)에게 제공하는 콘텐츠를 제공하는 서버.

• 즉 정적인 HTML이나 jpeg 혹은 GIF 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저로 제공.

• 초창기만 해도 단순히 HTML이나 이미지만 제공되는 사이트가 많았다.

 

WAS (Web Application Server)

• 서버 단에서 애플리케이션을 동작할 수 있도록 지원.

• 일반적으로 container라는 용어로 쓰인다.

• 초창기에는 CGI, 그 이후에는 Servlet, JSP, ASP, PHP 등의 프로그램으로 사용되고 있다.

 

언제부턴가 웹이 다양한 형태의 프로그램들을 제공하기 시작했다. 최근에는 게시판이나 방명록 등 서버와 사용자가 상호 대화 할 수 있는 페이지로 제공한다. 이제 대부분의 웹서버들이 이러한 요구에 맞춰 내부 애플리케이션을 동작시킬 수 있는 컨테이너를 내장하고 있다. 단지 웹서버의 기능만을 수행하던 기존과는 달리 동적인 요구에 대응하기 위해 이에 적합한 형태로 변화한 것이다. 해당 제품의 웹 서버 유무를 구분할 때 제품의 기능 보다는 사용하는 기능에 초점을 맞춰 분류하게 된 시점이다. 즉 인터넷 사용자가 증가함에 따라, 각 웹 사이트는 보다 많은 사용자에게 원활한 서비스를 제공하기 위해 기능적인 layer를 나누게 되었고 여기서 웹 서버와 WAS의 구분점이 생기게 된 것이다.

웹 서버와 WAS의 구성에 따른 분류

1. 기본적인 웹 사이트 환경

1-jini7652

웹 사이트의 가장 기본적인 구성 환경이다. 모든 콘텐츠를 한 곳에 집중시켜 웹 서버와 WAS의 역할을 동시에 수행. 이런 구성은 사용자 증가에 따라 스위치 장비를 통해 로드 밸런싱을 수행하고, 여러 대의WAS를 통해 지원이 가능하다. 필요시 추가로 WAS를 증설하는 구조라고 볼 수 있다.

하지만, WAS가 정적인 데이터(HTML/image)의 처리와 동적인 데이터(웹 애플리케이션)의 처리를 동시에 수행하기 때문에, 최적화 측면에선 그다지 바람직하지 않다. 또한 정적 데이터의 입출력 처리를 위해 웹 애플리케이션의 수행을 방해할 수 있다. 웹 애플리케이션의 수행으로 정적인 데이터에 영향을 줄 수 있어 사용자 요청이 증가할 경우 대처가 어려운 측면도 있다.그래서 사용자가 많지 않거나 트래픽이 적을 때 효율적이며 간단한 구조로 개발 및 테스트 시스템 구성시 활용의 가치가 높다.

 


2. 웹 서버와 WAS로 구성된 환경

2-jini7652 (1)

웹 서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도한 형태이다. 정적인 데이터는 구조적으로 앞에 존재하는 웹 서버에서 처리하고, 동적인 데이터는 뒷단의 WAS가 처리한다.

사용자 요청에 대해서 정적 데이터인 html과 자바 스크립트 파일, CSS, image 등을 앞단의 웹 서버에 위치시켜 처리함으로써 WAS로 서비스 요청이 넘어가게 않게 한다. 더불어 그 가운데 웹 애플리케이션 서비스를 위치적으로 뒤편에 존재하는 WAS까지 넘겨줌으로써 WAS는 웹 애플리케이션의 수행에 집중할 수 있다.

비용적인 측면 또한 중요하다. 웹 서버는 상대적으로 저렴한 제품이나 오픈 소스를 사용하면 전체를 WAS로 구성하는 것보다 비용적인 측면에서 효과가 크다. WAS의 경우 정적인 html이나 image 처리에 있어 상용 제품이 오픈 소스나 상대적으로 저렴한 웹 서버 보다 낮은 성능을 보이기도 한다. 이는 일반적인 웹 페이지보다 웹 애플리케이션을 동작시키는 곳에 더 최적화 되어 있다고 보면 된다. 웹 서버 단에서 처리할 것과 WAS에게 넘겨질 것을 처리하는 방식은 웹 서버 단의 configuration을 통해 처리할 수 있다. 특정 확장자나 디렉토리 업무는 WAS로 넘기고 그렇지 않은 것은 웹 서버 단에서 처리한다.

이에 고려할 사항으로 개발 환경과 운영환경이 서로 다를 수 있다는 것이다. 즉 개발환경에서는 굳이 웹 서버와 WAS를 구분하지 않고, 운영 서버에서만 구분하는 경우 Context Root 밑에서의 html, 자바 스크립트, CSS, image 등의 디렉토리를 적절히 구분하는 것이 필요하다.


<리스트 1>은 아파치 웹 서버에 환경정보를 수정하여 WAS가 처리할 확장자를 지정하는 예제이다

5-jini7652

 

3. 이미지 서버를 별도로 두고 있는 환경

3-jini7652

<그림 3>은 일반적인 경우라고 볼 순 없지만, 충분히 가능한 구성이다. 점점 화려해지는 UI를 자랑하는 페이지들이 많아짐에 따라 이미지의 비중이 증가하고, 이런 이미지들이 전체 네트워크 비중의 상당부분을 차지한다. 따라서 이미지 서버를 따로 구성해 네트워크 비중도 줄이면서 웹 서버와 WAS를 좀 더 효과적으로 사용할 수 있는 구조라 할 수 있다.

이런 환경들은 각 사이트의 특성을 파악하여 얼마든지 응용할 수 있다. 자신의 사이트에서 가장 많은 비중을 차지하거나, 트랜잭션을 차지하는 부분이 무엇인지 확인하고, 그렇게 구분된 콘텐츠를 적절히 배분하는 것이다. 바로 <그림 3>이 이미지가 많은 사이트에서 취할 수 있는 방법인 셈이다. 또는 특정 콘텐츠만 집중적인 요청을 받는 경우도 있다. 예를 들어 대학 입시 때 경쟁률 조회는 상당히 많은 사용자에 의해 조회가 되고, Reload 또한 빈번하게 일어나므로 특정시간 간격으로 html을 생성하고, 페이지를 특정 서버에 위치시켜 적절하게 부하를 분산시켜 해결이 가능하다.

이런 동적인 환경은 다양한 상황에 대처가 빠르다는 장점도 있지만, 구조를 정확하게 이해하지 않았을 경우에는 개발 및 테스트에 많은 시간이 쓰인다는 단점도 있다. 관리상의 문제가 발생할 수도 있다. 환경을 구성하기 전에 충분한 검토가 성행돼야 한다.

 

4-jini7652 (1)

 


<그림 4>는 <그림 2>의 변경된 형태로 볼 수 있다. WAS단의 프로그램이 많은 비중을 차지하는 경우, presentation logic을 담당하는 프로그램과 business logic을 담당하는 프로그램을 구분하는 구성이다. 이런 구성은 특정 로직 부분의 부하에 따라 적절한 대응을 할 수 있으나 구조가 복잡해지는 단점이 있다.

 

Web Server와 WAS의 구분

기능적으로만 본다면 거의 대부분의 웹 서버가 웹 애플리케이션을 동작시킬 수 있지만 모두 웹 서버 혹은 WAS라고 부르는 것 보다는 어떤 기능을 수행하는지 따라, 즉 기능상의 분류를 통해 구분지어 사용해야 할 것이다.

 

 

참조

1. 월간 micro Software 2007년 3월호. P. 166~167 “웹 서버와 WAS(Web Application Server)

WAS(Web Application Server)?

was는 J2EE 스펙을 구현한 서버입니다. 그중에서 특히 주목해야할 건 jsp/servlet Container와 EJB Container로서의 기능입니다. 이중에서도 EJB Container로서의 역할에 비중이 크죠.

가장 많이 쓰이는 WAS는 BEA사의 Web Logic이며, 그밖에도 여러가지의 WAS가 있습니다. 참고로 tomcat 은 jsp/servlet Container의 기능은 구현했으나 EJB Container로서의 기능은 없습니다. 그래서 tomcat은 WAS가 아니라고 하는 분들도 있습니다.

application이라 함은 응용프로그램입니다.응용프로그램이란 어떤 목적을 위해 만들어진 프로그램입니다. word는 문서작성을 위한 목적을 가지고 만들어진 프로그램이며, 포토샵은 이미지 편집/작성을 목적으로 만들어진 프로그램입니다.

web application이란 web에서 어떤 목적을 처리할 목적으로 만들어진 프로그램을 총칭하는 말입니다. 대표적인 웹 어플리케이션으로는 게시판, 쇼핑몰 등이 있겠네요. 아 지금 이곳 지식iN도 웹 어플리케이션입니다. word와 포토샵을 웹으로 구현하면 그것도 웹 어플리케이션입니다만 일반 어플리케이션을 그 상태 그대로 웹에서 실행시킬 수는 없습니다. 미들웨어도 하나의 응용 프로그램이라고 볼 수 있습니다.  주요 기능으로는 각 응용 프로그램간의 연계이죠.

미들웨어로서의 WAS는 Web Server와 DB Server 사이에 존재하면서 웹 어플리케이션을 탑재하고 있습니다. 이 웹 어플리케이션의 주요 기능은 DB의 데이터를 사용자의 목적에 맞게 가공하여 web server를 통해 보여주는 것이죠.

그럼 왜 WAS를 사용하느냐? 한마디로 분산환경에서 사용합니다. 분산환경에서의 가장 큰 이슈는 트랜잭션 처리인데, 이 트랜잭션 처리를 아주 적은 비용으로 효과적으로 처리할 수 있게 해주는 것이 WAS입니다.

<참조>
http://belselios.tistory.com/entry/Web-Server-와-WASWeb-Application-Server비교

반응형