미국 마이크로소프트사의 웹 서버인 인터넷 정보 서버(IIS)가 구비되어 있으며, 외부 프로그램을 기동하기 위한 인터페이스. WWW 서버는 클라이언트로부터 데이터베이스 접속 등의 요구가 오면 외부 게이트웨이 프로그램을 기동시켜 그 요구를 처리한다.

외부 프로그램을 기동하는 방법으로는 공통 게이트웨이 인터페이스(CGI)가 유명한데,
복수의 WWW 클라이언트로부터의 접속 요구가 동시에 실행되는 경우는 특히 부하가 큰
프로세스 생성 처리를 수반한다.
반면, ISAPI를 이용하면 IIS가 제공하는
응용 프로그램 인터페이스(API)를 이용해서 웹 서버 기능을 정교하게 제어할 수 있으며, 실행 시의 부하도 경감할 수 있다.
ISAPI를 이용한
확장 프로그램에는 ISAPI Extension과 ISAPI Filter가 있다.

ISAPI 필터란?
ISAPI 필터는 인터넷 정보 서버의 앞단에 위치하면서 인터넷 정보 서버로 들어온 모든 request에 대해 가장 먼저 처리할 권한과, 인터넷 정보 서버가 생성한 response를 클라이언트에 보내주기 전에 가공할 수 있는 권한을 갖는다.
ISAPI 필터를 작성할 때 잊지 말아야 할 것은 가능한 한 최소한의 작업을 이 곳에서 처리해야 한다는 사실이다. 웹 사이트에 대한(가상 디렉터리가 아닌 웹 사이트 전체이다!) 모든 request가 ISAPI 필터를 거칠 수 있기 때문에 과도한 작업을 필터에 걸어주게 되면 웹 사이트 전체의 퍼포먼스에 심각한 영향을 끼치게 된다.

ISAPI 필터의 동작 원리
ISAPI 필터는 웹 서비스가 시작될 때 인터넷 정보 서버와 같은 프로세스 공간에 로딩되는데, 이 때 ISAPI 필터는 자신이 처리할 이벤트 정보를 인터넷 정보 서버에게 알려준다. 클라이언트로부터 request가 들어오고 response를 전송할 때 인터넷 정보 서비스는 ISAPI 필터가 등록한 이벤트 정보를 사용해 각각의 필터에게 특정 이벤트가 발생하였음을 알려주고, ISAPI 필터는 이벤트 핸들러에서 원하는 처리를 한다.

1) 웹 서비스가 시작될 때 ISAPI 필터는 자신이 처리할 이벤트를 인터넷 정보 서버에게 알린다.
2) 클라이언트로부터 request가 들어왔을 때 인터넷 정보 서버는 request와 관련된 이벤트를 알려줄 ISAPI 필터가 있는지 확인하고, 그러한 필터가 존재한다면 request에 대한 정보를 ISAPI 필터에게 전달한다.
3) ISAPI 필터는 이벤트 핸들러에서 request에 대한 작업을 수행하고 제어권을 다시 인터넷 정보 서버로 넘긴다.
4) 인터넷 정보 서버는 response를 생성한 후 response와 관련된 이벤트를 알려줄 ISAPI 필터가 존재하는지 확인하고, 그러한 필터가 있으면 response에 대한 정보를 ISAPI 필터에게 전달한다.
5) ISAPI 필터는 이벤트 핸들러에서 response에 대한 작업을 수행하고 response를 클라이언트에게 전달한다.

이러한 과정을 수행하면서 인터넷 정보 서버와 ISAPI 필터는 HFC(HTTP_FILTER_CONTEXT)라는 구조체를 사용해 상호간에 정보 교환을 한다.

Web Server

웹서버는 클라이언트/서버 모델과 웹의 HTTP를 사용하여 웹 페이지가 들어 있는 파일을 사용자들에게 제공하는 프로그램이다. 웹사이트가 운영되고 있는 인터넷상의 모든 컴퓨터들에는 모두 웹서버 프로그램이 설치되어 있다. 가장 보편적인 웹서버들로는 32 비트 윈도우와 유닉스 기반의 운영체계에서 모두 쓸 수 있는 아파치와, 윈도우 NT에 딸려 나오는 IIS, 그리고 넷스케이프엔터프라이즈 서버 등이 있다. 그밖에 네트웨어 운영체계를 쓰는 사용자들을 위한 노벨의 웹서버, 주로 IBM의 OS/390AS/400 고객들을 위한 IBM의 로터스 도미노 서버를 비롯, 다른 웹서버들도 있다.

웹서버들은 흔히 전자우편, FTP 파일의 다운로드, 그리고 웹페이지 구축, 발간 등에 필요한 인터넷 및 인트라넷과 관련된 프로그램들의 커다란 패키지의 일부로서 나온다. 웹서버를 고를 때 고려해야할 사항으로는, 운영체계나 다른 서버들과 얼마나 잘 어울려 동작할 것이냐 하는 것과, 서버 측의 프로그래밍, 퍼블리싱, 검색엔진 등을 처리하는 능력, 그리고 함께 따라오는 구축도구 등이 있다.


 WAS (Web Application Server)
웹과 기업의 기간 시스템 사이에 위치하면서, 웹 기반 분산 시스템 개발을 쉽게 도와주고 안정적인 트랙잰션 처리를 보장해 주는 일종의 미들웨어 소프트웨어 서버.

3계층 웹 컴퓨팅 환경에서 기존 클라이언트/서버 환경의 애플리케이션 서버와 같은 역할을 하며, 클라이언트와 서버 환경에서 트랜잭션 처리및 다른 기존 시스템 간의 애플리케이션 연동을 등을 주된 기능으로 하고 있다.

요즘들어서는 WAS는 주로 데이터베이스 조회나 일반적인 비즈니스 로직에 대한 처리를 위해 다양한 언어로 개발된 인터넷/인트라넷 환경의 소프트웨어로 많이 불리운다. 자바스크립트나 JSP 등과 같은 스크립트 및 서비스들은 대개 최신의 데이터를 검색하기 위해 데이터베이스에 접근하고, 브라우저 또는 클라이언트 프로그램을 통해 사용자들에게 검색 결과를 제공한다.

WAS를 비롯한 애플리케이션 서버들은, 웹서버 즉 HTTP 서버와 같은 컴퓨터를 공유할 수도 있지만 별개의 컴퓨터를 독립적으로 사용하는 경우도 많다. 대규모 사이트에서는, 오히려 WAS와 웹서버 등을 위해 여러 대의 컴퓨터가 동원되기도 한다.
넷스케이프의 Netscape Application Server, Bea의 Weblogic Enterprise, 볼랜드의 Appserver, 그리고 IBM의 Websphere Application Server 등의 WAS 대표적인 제품들이다.


※Web Server와 WAS와 차이※

- Web Server 의 정의 : Web Client(웹 브라우저)에게 컨텐츠를 제공하는 서버, 정적인 HTML이나 jpeg, gif 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에게 전송하는 역할

- WAS(Web Application Server)의 정의
   ○ Server 단에서 Application을 동작할 수 있도록 지원함 => Jeus
   ○ 기존 웹 서버와 달리 동적인 요구에 대응하기 위해 적합한 형태로 변화, Web Client(브라우저)에게는 결과값만 전송함.
   ○ Container(컨테이너)라는 용어로 쓰이며, 초창기는 CGI, 그 후에서는 Servlet, , JSP, ASP 등의 프로그램으로 사용됨

- Web Server와 WAS의 구성에 따른 분류
   ○ WAS와 WebServer를 분리하지 않는 경우 
   모든 컨텐츠를 한곳에 집중시켜 웹서버와 WAS의 역할을 동시에 수행, 스위치를 통한 로드 밸러싱, 사용자가 적을 경우 효율적
 
   ○  WAS와 WebServer를 분리한 경우
   웹서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도, 정적인 데이터는 웹서버에서 처리, 동적인 데이터는 WAS가 처리
 
   ○  WAS 여러개와 WebServer를 분리한 경우
   WAS단을 프리젠테이션 로직와 비즈니스 로직으로 구분하여 구성, 특정 logic의 부하에 따라 적절한 대응할 수 있지만 설계단
   계 유지보수 단계가 복잡해 질 수가 있다. 


 WAS 와 Web Server 종류

   ○ WAS 종류
   tomcat, tMax jeus, BEA Web Logic, IBM Webspere, JBOSS,Bluestone, Gemston, inprise, Oracle, PowerTier,Apptivity,
   silverStream
   ○ Web Server 
    IIS, apache, tMax, WebtoB

   - tomcat
       아파치 소프트웨어 재단의 애플리케이션 서버로서, 자바 서블릿을 실행시키고 JSP 코드가 포함되어 있는 웹페이지를 만들
       어준다. 자바 서블릿과 JSP 규격 '참조용 구현'으로 평가되고 있는 톰캣은, 개발자들의 개방적 협력 작업의 산물로 바이너리
       버전과 코어버전 둘 모두를 아파치 웹사이트에서 얻을 수 있다. 톰캣은 자체적으로 보유하고 있는 내부 웹서버와 함께 독립
       적으로 사용 될 수도 있지만 아파치나 넷스케이프 엔터프라이즈 서버, IIS, 마이크로소프트의 PWS 등 다른 웹서버와 함께 사
       용할 수도 있다. 톰캣을 실행시키기 위해서는 jre  1.1  이상에 부합되는 자바 런타입 환경이 필요하다.

[출처] Web Server 와 WAS|작성자


'WAS' 카테고리의 다른 글

JEUS 내부 클래스 패스 우선순위  (0) 2011.05.11
JBoss 설정  (0) 2011.04.30
apache ANT 설치  (1) 2011.04.30
JRebel Tools  (0) 2011.04.30
[jeus] jsp work directory (jsp-work-dir) 설정  (0) 2011.04.06

+ Recent posts