# Web server와 Web application server (WAS)란?
Web Server와 WAS(Web Application Server)는 모두 클라이언트 요청에 따라 웹 애플리케이션을 실행시키는 서버입니다.
Web Server는 웹 브라우저로부터 HTTP 요청을 받아들이고, HTTP 프로토콜을 기반으로 정적인 컨텐츠(HTML, 이미지, CSS, JavaScript 파일 등)를 제공합니다. 주로 Apache, Nginx, IIS 등이 사용됩니다.
WAS는 Web Server와는 달리 동적인 컨텐츠를 생성하는 애플리케이션 서버입니다. 웹 서버로부터 받은 HTTP 요청을 처리하여, 애플리케이션 로직을 수행하고, 데이터베이스와 같은 백엔드 서비스와 연동하여 동적인 컨텐츠를 생성하여 웹 브라우저에 제공합니다. WAS는 보통 Servlet/JSP 컨테이너, EJB 컨테이너, 웹 서비스 엔진 등의 구성 요소를 포함합니다. 주로 Tomcat, JBoss, WebLogic, WebSphere 등이 사용됩니다. 또 추가적으로, WAS는 웹서버의 기능도 갖고 있습니다.
보통의 서버는 web server와 WAS를 같이 사용합니다.
# web server, WAS를 사용하지 않고도 http request를 처리하는 것은 어떤가요?
(Java) HTTP server, socket 통신 등을 활용하여 요청에 대한 응답을 처리할 순 있습니다. 하지만 tomcat, apache 같은 오픈소스가 현재 갖고 있는 기능들을 대체할만큼의 성능을 가지도록 하기에는 굉장한 어렵습니다.
- 높은 생산성: Servlet을 개발하는 것은 비교적 복잡하며, 많은 시간과 노력이 필요합니다.
- 안정성: Web server나 WAS는 대부분의 경우 안정적으로 동작하며, 보안, 로드 밸런싱, 클러스터링 등의 기능도 제공합니다.
- 확장성: Web server나 WAS는 대규모 트래픽에 대한 처리를 지원하며, 클러스터링과 같은 기능을 통해 확장성을 높일 수 있습니다.
- 자원 효율성: Web server나 WAS는 여러 애플리케이션을 동시에 실행할 수 있으며, 서버의 자원을 효율적으로 활용할 수 있습니다.
서버 자체적으로 기능을 추가해야 한다면 override를 통해 변경해서 쓰기도 한다고 합니다.
# WAS가 웹서버의 기능을 갖고 있음에도 왜 두 가지를 함께 쓰나요?
어떤 사람들은 목적에 따라 즉, 정적/동적 데이터에 따라 분리하는 것이 더 효율적이기 때문이라고 주장합니다. WAS가 뭐든 다 할 줄 안다고 해서 정말 다 맡겨버리면 과부하가 걸려서 좋지 않다고요.
하지만 이젠 옛날 얘기일 뿐이라고 하네요. 오히려 정적인 데이터 처리를 위해서 굳이 Tomcat 앞에 또 아파치 웹 서버를 두는 게 관리 부담과 불필요한 과부하만 생긴다고 합니다. 다음과 같은 경우에는 사용한다고 합니다.
- 하나의 웹서버에서 다른 언어의 어플리케이션을 사용할 경우
- 로드밸런싱이 필요한 경우 - 특정 서버에서 에러/과부하가 발생할 경우 다른 서버가 작동
- 보안 강화 - 웹서버가 해킹당해도 WAS는 작동
# reference
https://taes-k.github.io/2019/05/24/webserver/
https://makemethink.tistory.com/169
chatgpt
'Back-end' 카테고리의 다른 글
[JVM 동작원리] 2. Runtime Data Area (0) | 2023.10.12 |
---|---|
[JVM의 동작원리] 1. 클래스 로더 (0) | 2023.10.10 |
Java의 compile 과정 (0) | 2023.10.09 |
agile 방법론, microservice, dev-ops, cloud (0) | 2023.07.15 |
JAVA란 (0) | 2022.12.24 |