목차
- 웹 서버란?
- 웹 애플리케이션 서버란?
- 차이점
- Web서버와 WAS의 분리
들어가며
spring-boot 를 공부하면서 내장 웹 서버로 톰캣이 있는 것을 알게 되었는데, 왜 웹 애플리케이션 서버와 웹 서버를 따로 두는지 궁금해서 한 번 정리를 해 보았습니다.
웹 서버 (Web server)란?
웹 서버(Web server)는 HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말합니다. 웹서버의 가장 큰 특징으로는, 정적인 페이지만을 반환한다는 점이 있습니다.
정적인 페이지(Static Pages)란?
html, image, JavaScript 파일 등 컴퓨터에 미리 저장되어 있는 파일들이 그대로 전달되는 웹 페이지를 말합니다.
또한, 서버에 저장된 데이터가 변경되지 않는 한 항상 동일한 페이지를 반환합니다.
하지만, 웹서버로는 단순한 정적인 페이지밖에 처리하지 못합니다. 이를 위해 동적인 페이지를 처리하기 위한 웹 애플리케이션 서버가 존재합니다.
즉, 웹서버는 단순히 저장된 웹 리소스들을 클라이언트로 전달하는 역할을 할 뿐만 아니라, 동적인 요청이 들어왔을 때, WAS에게 요청하는 역할도 합니다.
대표적인 웹 서버의 종류에는 Apache Server, Nginx 등이 있습니다.
웹 애플리케이션 서버 (WAS)란?
웹 애플리케이션 서버(Web Application Server, 약자 WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크입니다. 웹 애플리케이션 서버의 가장 큰 특징으로는, 정적인 페이지 뿐만 아니라 동적인 페이지도 반환한다는 점이 있습니다.
동적인 페이지(Dynamic Pages)란?
서버에 있는 데이터를 스크립트에 의해 가공처리하여 만들어진 html 문서를 전달하는 웹 페이지를 말합니다.
사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됩니다.
즉, WAS는 사용자의 동적인 요청을 받아 처리해 주는 역할을 합니다.
대표적인 WAS의 종류에는 BEA사의 Web Logic, IBM사의 Web Sphere 등이 있습니다.
차이점
가장 큰 차이점은 웹 서버는 정적인 페이지를 반환하고, WAS는 동적인 페이지를 반환합니다.
웹 서버는 WAS를 거치지 않고 바로 자원을 제공하기 때문에 WAS만 사용할 때 보다 빠르고 안정적입니다.
WAS는 HTML 과 같은 정적인 페이지에서 처리할 수 없는 비즈니스 로직이나 DB조회와 같은 동적인 콘텐츠를 제공합니다.
아파치 웹서버와 아파치 톰켓의 차이?
- 아파치 웹서버 : WEB 서버
- 아파치 톰켓 : WAS 서버
Web서버와 WAS의 분리
정적인 페이지만을 서버에 배포한다면 웹 서버만으로 충분하겠지만, 대부분의 웹서비스는 동적인 콘텐츠를 포함합니다.
그러면 정적, 동적 페이지 모두를 보여줄 수 있는 WAS만을 사용하면 되지 않겠냐고요?
만약 WAS가 정적 콘텐츠 요청까지 처리하게 되면, 서버에 부하가 커지고, 속도가 느려지게됩니다.
따라서 WAS는 DB조회 및 사용자의 요구사항을 집중적으로 처리하고, 단순한 정적 페이지는 웹 서버에게 맡겨 서버 부하를 줄이는 것이 가장 효율적입니다 .
참고