- 웹 서버 프로젝트를 진행하며 서버 개발에 있어 기초적인 개념인 Web server와 WAS(Web Application Server)의 차이점을 알아보겠습니다.
먼저 두 개의 차이를 알기 전에 정적페이지와 동적페이지에 대해 알아야 합니다.
Static Pages(정적 페이지)
- 항상 동일한 페이지를 반환한다.
- 웹서버에 이미 완성된 파일(html)을 전달하는 웹페이지
- 사용자는 서버의 데이터가 변경되지 않은 한 고정된 웹페이지를 보게 됨
장점
- 다른 처리 없이 요청에 대한 파일만 전송하기 때문에 빠름
- 단순한 문서로 웹서버를 구축하므로 호스팅 서버에 연결하는 비용이 적음
단점
- 저장된 정보만 보여주기 때문에 서비스가 한정적
- 추가 수정 삭제 등의 작업 시 코드를 직접 건드리기에 관리가 힘듦
Dynamic Pages(동적 페이지)
- 인자의 내용에 맞게 동적인 contents를 반환
- 서버에 있는 데이터를 스크립트에 의해 가공처리 하여 만들어진 html 문서를 전달하는 웹페이지
- 요청에 관하여 사용자는 조건에 따라 다른 결과를 받음
- 사용자는 상황, 시간, 요청 등에 따라 달라지는 웹페이지를 보게 됨
장점
- 여러 요청에 따라 웹페이지를 동적으로 생성하므로 서비스가 다양
- 추가 수정 삭제 등의 작업이 용이
단점
- 사용자에게 웹페이지를 전달하기 전에 처리해야 할 작업을 거치므로 상대적으로 느림
- 웹서버 이외에 추가적인 웹애플리케이션 서버(backend)가 필요하여 추가비용 발생
Web Server
- HTTP 프로토콜 기반으로 클라이언트가 웹브라우저에 서 어떠한 요청을 하면 그 요청을 받아 정적 콘텐츠를 제공하는 서버
- 웹 서버가 정적 콘텐츠가 아닌 동적 콘텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해줌
WAS(Web Application Server)
- WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버
- HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행
- WAS는 JSP, Servlet 구동환경을 제공해 주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너라고도 부름
- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다. WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리 가능하다. 또한 비즈니스 로직을 수행할 수 있다.
- Tomcat, JBoss, WebSphere 등
- Web Server와 Web Container의 역할을 모두 할 수 있다.
분리하는 이유
- 서버 부하 방지
- 보안 강화
- SSL에 대한 암호화, 복호화 처리에 웹서버를 사용가능
- 여러 대의 WAS 연결 가능
- 여러 개의 서버를 사용하는 대용량 웹 애플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응
- 무중단 운영이란 보통 무중단 배포라고 부르며 운영 중인 서비스를 중단하지 않고 배포하는 것을 의미
- 여러 웹 애플리케이션 서비스 가능
- 하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용 가능
Web Service Architecture
- Client -> Web Server -> DB
- Client -> WAS -> DB
- Client -> Web Server -> WAS -> DB
참고