본문 바로가기

About 暗中摸索/기술사 준비

WAS(Web Application Server)

WAS(Web Application Server)

WAS(Web Application Server)
1) Web 서버
Web 서버란 HTTP프로토콜을 기반으로 하여, Web 클라이언트(브라우져)로 부터의 요청을 서비스 하는 기능을 담당하는 프로그램. (일반적으로 Apache 를 많이 사용함.)
Web 서버의 역할은 html, 이미지(jpg, gif..등), xml 등에 대한 처리를 담당합니다. (CGI 프로그램의 요청도 처리합니다.)

2) Web Application 서버여러 Web 클라이언트(브라우져)의 요구를 Web 서버 혼자 감당하기에는 힘들기 때문에, 구조적으로 Web 서버의 기능을 분리하기 위해 만들어진 것이 Web Application Server(WAS)입니다. (일반적으로 Tomcat, Weblogic, WebShpare 등을 많이 사용.)
WAS는 웹이 탄생한 이래, 주로 DB조회나 일반적인 비즈니스 로직에 대한 처리를 위해 다양한 언어로 개발된 인터넷/인트라넷 환경의 소프트웨어를 지칭한다. 자바스크립트나 JSP 등과 같은 스크립트 및 서비스들은 대개 최신의 데이터를 검색하기 위해 DB에 접근하고, 브라우저 또는 클라이언트 프로그램을 통해 사용자들에게 검색 결과를 제공한다.
WAS를 비롯한 애플리케이션 서버들은, 웹서버 즉 HTTP 서버와 같은 컴퓨터를 공유할 수도 있지만, 별개의 컴퓨터를 독립적으로 사용하는 경우도 많다. 대규모 사이트에서는, 오히려 WAS와 웹서버 등을 위해 여러 대의 컴퓨터가 동원되기도 한다. 넷스케이프의 Netscape Application Server, BEA의 Weblogic Enterprise, 볼랜드의 AppServer, 그리고 IBM의 Websphere Application Server 등이 WAS의 대표적인 제품들이다.

2. Web 서버와 Web Application 서버의 차이점
사용 목적이 다르다.
Web 서버는 html, 이미지들의 요청을 처리하는데 빠르고,
Web Application 서버는 Servlet이나, JSP의 비지니스 로직을 수행하는데 적합니다.
( 웹컨테이너란 이러한 Servlet아니, JSP를 수행하는 역할을 하는 서버를 말합니다. )
그렇다고 Web Application이 html, 이미지들의 요청을 처리하지 못한다는 얘기는 아닙니다. 다만 처리 속도가 Web 서버에 비해 느리다는 거죠.
이렇게 서로 다른 강점을 합해서 사용하기 위해 Web 서버와 Web Application 서버를 연동하여 서비스하기도 합니다.

3. Web Application의 요소
- Servlet
- JSP Page
- Utility Classes
- Static documents (HTML, images, sounds, etc.)
- Client side Java applets, beans, and classes
- 위의 모든 요소를 연결하는 기술적인 메타 정보

4. Web Application의 구조
반드시 다음 그림과 같은 구조로 유지 되어야 한다. ( 표준임 )
  웹 어플리케이션 ( Web Root )
                           ├── WEB-INF
                     ┌─┴─┐     │
                   html  jsp  ├─ classes
                                 ├─ lib
                                 └─ web.xml

요구되는 형태로 웹 어플리케이션 보관소 생성을 용이하게 하기 위해서, 웹 어플리케이션의 "실행" 파일들(즉, 웹 어플리케이션을 실행할 때 톰캣이 사용하는 파일들)을 WAR 형식에서 요구하는 것과 같은 구성으로 정리하는게 편하다. 이렇게 하려면, 웹 어플리케이션의 "document root" 디렉토리에 다음 내용으로 구성한다:

*.html, *.jsp, 등        -  HTML, JSP,  다른 파일들 (예를 들면 자바스크립트, 스타일시트, 이미지 같은).
                                 대규모 어플리케이션에서 이 파일들을 서브디렉토리 체계로 나누어 놓을 수 있다.
                                 그러나 규모가 작대면 하나의 디렉토리에서 전체를 관리하는 것이 보다 단순하고 쉽다.
/WEB-INF/web.xml   - 웹 어플리케이션의 웹 어플리케이션 배치 설명자 Web Application Deployment Descriptor.
                                서블릿과 웹어플리케이션을 구성하는 다른 컴포넌트들을 설명하고, 각종 초기화 파라메터들과
                                서버 기능을 활용하기 위한 컨테이너가 관리하는 보안 제한 구역을 지정하는 XML 파일.
/WEB-INF/classes/ - 이 디렉토리에는 웹 어플리케이션에서 사용하는 모든 자바 파일(그리고, 관련 자원)이 들어있다.
                                서블릿과 비서블릿 클래스 파일들이며 jar 형태로 묶여있지 않은 것.
                                패키지가 선언된 클래스라면 /WEB-INF/classes/ 를 기준으로 디렉토리를 만들면 된다.
                                예를 들어, 클래스명이 com.mycompany.mypackage.MyServlet 라면 파일의 저장경로는
                                 /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class 이 된다.
/WEB-INF/lib/         - 이 디렉토리에는 웹어플리케이션에서 사용하는 자바 클래스파일을 포함하는 JAR 파일들이 위치.
                               외부 클래스 라이브러리나 JDBC 드라이버 같은 것들.
                               톰캣(또는 다른 2.2/2.3 호환 서버)에 어플리케이션을 설치할 때, WEB-INF/classes/ 에 있는 클래스들과
                               WEB-INF/lib/ 디렉토리에 있는 JAR파일에 있는 모든 클래스들은 같은 웹 어플리케이션에서 사용하는
                               모든 클래스가 접근가능하게 되어있다. 따라서, 만일 이 디렉토리 안에 사용하는 모든 라이브러리 클래스들을
                               몰아 넣으면 (외부 라이브러리를 사용하는 경우 재배포 권한에 관한 라이센스를 확인하길 바랍니다.),
                               웹 어플리케이션의 설치가 간단히 끝날 수 있다
                               시스템 클래스패스에 대한 조정(또는 서버에 있는 전체 라이브러리의 설치)도 필요 없다. (Servlet 2.2 스펙 참조)

'About 暗中摸索 > 기술사 준비' 카테고리의 다른 글

ISMS  (0) 2016.01.25