[WAS] WAS의 정의
웹 애플리케이션 서버를 미들웨어의 일종으로 동일시 하는 경우도 많지만 정확하게는 미들웨어 기능 외에 개발툴과 웹 서버를 포함한 것이다. 그런데 요즈음 웹 서버의 추세는 제품에 속하여 벤더에서 제공하거나 또는 별도로 기존의 웹 서버를 활용할 수 있도록 지원하기도 하는 등 반드시 웹 서버와 미들웨어의 통합이 이루어 지고 있는 것은 아니다.
즉, 웹 애플리케이션 서버는 미들웨어가 웹 기반이라는 점과 거기에 추가하여 개발툴이 있다는 것이다. 이미 많은 기간업무가 클라이언트/서버를 확장한 다계층 아키텍처를 도입했고 웹을 통한 데이터베이스 연동을 위해 CGI(Common Gateway Interface)방식을 이용하고는 있지만 웹 서버 환경에서는 처리 속도가 떨어지는 문제점이 있다. 이러한 문제를 해결하기 위해 웹 상에서의 트랜잭션의 효율적 처리, 고가용성, 이기종간 통합 등의 기존 미들웨어 개념에서 더 나아가 개발, 통합, 배포 및 관리까지 책임지는 등 새로운 구성 환경이 웹 애플리케이션 서버인 것이다.
- 프로그램 계층과 웹 서버 계층이 통합되어 애플리케이션에 대한 관리 기능을 포함
- 세션관리기능 : 서버 프로그램에 대한 플랫폼을 제공으로 서버 플랫폼에 세션 정보 유지, 애플릿을 통한 클라이언트에 저장
- 멀티 쓰레드 : 쓰레드로 사용자 요청 처리하여 서버 머신에 주는 영향을 줄임
- 서블릿(Servlet) 지원 : 애플릿의 코드를 서버에서 동작시키고 그 결과를 HTML 형식으로 보냄
- 코바(CORBA)지원 : 서버와 서버 간 연결의 기반 구조와 분산 객체 기반을 제공
- EJB(Enterprise JavaBeans)지원 : JPE(Java Platform for Enterprise)표준의 일부인 EJB 기술은 트랜잭션 관리나 보안 문제, 데이터베이스 커넥션 문제, 쓰레딩 등의 문제로부터 개발자를 분리시켜 줌
웹 서버 환경
현재 3계층 클라이언트/서버의 기능을 수행할 수 있는 가장 각광받는 개념은 웹이다. 광역의 의미로 보았을 때 웹이 3계층 클라이언트/서버 구조의 장점을 가장 많이 포함하고 있기 때문이다.
웹 서버 환경의 차세대 플랫폼으로의 발전 가능성은 확실하다는 것이 수많은 전문가들의 공통된 견해이지만, 위에서 보여지는 단점으로 인한 웹상에서 구현이 불가능 하거나 어려웠던 사항을 실현 가능케 하는 동시에 웹의 장점을 그대로 유지할 수 있는 웹 애플리케이션 서버가 등장하게 된 것이다.
3계층 클라이언트/서버의 필요성
현재의 엔터프라이즈 환경은 수천개의 클라이언트들에 서비스하는 클라이언트/서버 애플리케이션들을 업무에 적용을 요구하여 클라이언트/서버가 부서용 수준을 넘어 전사적으로 확대되고 있다. 3계층은 바로 이러한 새로운 도전에 대처하도록 설계된 아키텍처이다. 3계층은 클라이언트에서는 GUI를 제공하고 원격 서비스나 메소드 호출을 통해 서버와 상호 작용하며 애플리케이션 로직은 중간 계층에 나타난다. 따라서 3계층에서는 프로세스들을 사용자 인터페이스와 데이터베이스와 분리해 관리하고 전개할 수 있다. 애플리케이션 로직은 이제 고유의 분리된 계층을 가지고 하나 이상의 서버 상에서 실행될 수 있게 되었다.
웹 애플리케이션 서버를 미들웨어의 일종으로 동일시 하는 경우도 많지만 정확하게는 미들웨어 기능 외에 개발툴과 웹 서버를 포함한 것이다. 그런데 요즈음 웹 서버의 추세는 제품에 속하여 벤더에서 제공하거나 또는 별도로 기존의 웹 서버를 활용할 수 있도록 지원하기도 하는 등 반드시 웹 서버와 미들웨어의 통합이 이루어 지고 있는 것은 아니다.
즉, 웹 애플리케이션 서버는 미들웨어가 웹 기반이라는 점과 거기에 추가하여 개발툴이 있다는 것이다. 이미 많은 기간업무가 클라이언트/서버를 확장한 다계층 아키텍처를 도입했고 웹을 통한 데이터베이스 연동을 위해 CGI(Common Gateway Interface)방식을 이용하고는 있지만 웹 서버 환경에서는 처리 속도가 떨어지는 문제점이 있다. 이러한 문제를 해결하기 위해 웹 상에서의 트랜잭션의 효율적 처리, 고가용성, 이기종간 통합 등의 기존 미들웨어 개념에서 더 나아가 개발, 통합, 배포 및 관리까지 책임지는 등 새로운 구성 환경이 웹 애플리케이션 서버인 것이다.
- 프로그램 계층과 웹 서버 계층이 통합되어 애플리케이션에 대한 관리 기능을 포함
- 세션관리기능 : 서버 프로그램에 대한 플랫폼을 제공으로 서버 플랫폼에 세션 정보 유지, 애플릿을 통한 클라이언트에 저장
- 멀티 쓰레드 : 쓰레드로 사용자 요청 처리하여 서버 머신에 주는 영향을 줄임
- 서블릿(Servlet) 지원 : 애플릿의 코드를 서버에서 동작시키고 그 결과를 HTML 형식으로 보냄
- 코바(CORBA)지원 : 서버와 서버 간 연결의 기반 구조와 분산 객체 기반을 제공
- EJB(Enterprise JavaBeans)지원 : JPE(Java Platform for Enterprise)표준의 일부인 EJB 기술은 트랜잭션 관리나 보안 문제, 데이터베이스 커넥션 문제, 쓰레딩 등의 문제로부터 개발자를 분리시켜 줌
웹 서버 환경
현재 3계층 클라이언트/서버의 기능을 수행할 수 있는 가장 각광받는 개념은 웹이다. 광역의 의미로 보았을 때 웹이 3계층 클라이언트/서버 구조의 장점을 가장 많이 포함하고 있기 때문이다.
장점 | 단점 |
- 웹 환경은 구조상으로는 3계층 : 사용자에게 결과 화면을 보여주는 웹 브라우저의 클라이언트 층, 웹 브라우저로 요청에 대한 결과를 보내주는 중계 역할을 담당하는 웹 서버층, 요청을 처리하는 CGI (Common Gateway Interface)를 비롯한 처리 프로 그램층 - 애플리케이션 관리 및 유지, 보수 비용의 획기적 절 감 : 웹 서버의 수정으로 애플리케이션 변경 가능, 웹 브라우저의 사용만으로 애플리케이션 운영 - 웹 브라우저 만으로도 모든 종류의 클라이언트를 기업내 / 외부에서 모두 접근 - 기업내 / 외부를 통합하는 새로운 애플리케이션을 사용 가능케 하므로 업무의 무제한 확장 - 기업내 / 외부의 통합이 가능하여 기간업무시스템 에 고객 및 시장의 요구를 즉시 처리하는 등 고객중 심경영의 토대 |
- 미들웨어인 웹 서버는 단지 중계 역할 - 웹 서버와 CGI(Common Gateway Interface) 프 로그램과의 관계는 운영체제 내의 두 개의 서로 다른 프로세서로 상호 데이터를 주고 받을 수 있 는 통로만 가짐 - CGI 프로그램의 경우는 사용자의 요청이 있을 때 마다 따로따로 생성이 되는 프로세스로 인해 부하 의 분산이나 서버 머신의 자원의 절약을 위한 지 원이 상당히 부족 - 웹의 기본적인 통신규약인 HTTP의 경우를 보면 클라이언트와 서버 간 데이터를 주고받을 필요가 있을 때마다 연결하고 전송이 끝나면 바로 연결을 끊기 때문에 여러 단계를 걸쳐 사용자와의 데이터 를 주고받아 처리가 되는 경우에는 프로그램이 복 잡해짐 |
웹 서버 환경의 차세대 플랫폼으로의 발전 가능성은 확실하다는 것이 수많은 전문가들의 공통된 견해이지만, 위에서 보여지는 단점으로 인한 웹상에서 구현이 불가능 하거나 어려웠던 사항을 실현 가능케 하는 동시에 웹의 장점을 그대로 유지할 수 있는 웹 애플리케이션 서버가 등장하게 된 것이다.
3계층 클라이언트/서버의 필요성
현재의 엔터프라이즈 환경은 수천개의 클라이언트들에 서비스하는 클라이언트/서버 애플리케이션들을 업무에 적용을 요구하여 클라이언트/서버가 부서용 수준을 넘어 전사적으로 확대되고 있다. 3계층은 바로 이러한 새로운 도전에 대처하도록 설계된 아키텍처이다. 3계층은 클라이언트에서는 GUI를 제공하고 원격 서비스나 메소드 호출을 통해 서버와 상호 작용하며 애플리케이션 로직은 중간 계층에 나타난다. 따라서 3계층에서는 프로세스들을 사용자 인터페이스와 데이터베이스와 분리해 관리하고 전개할 수 있다. 애플리케이션 로직은 이제 고유의 분리된 계층을 가지고 하나 이상의 서버 상에서 실행될 수 있게 되었다.
웹 애플리케이션 서버 구조