웹 서버 (Web Server)
- HTTP 기반으로 동작
- 정적 리소스 제공, 기타 부가기능
- 정적 HTML, CSS, JS, 이미지, 영상
- 에) NGINX, APACHE
웹 애플리케이션 서버 (WAS)
- HTTP 기반으로 동작
- 웹 서버 기능 포함
- 프로그램 코드를 실행해서 애플리케이션 로직 수행
- 동적 HTML, HTTP API (JSON)
- 서블릿, JSP, 스프링 MVC
- 예) 톰캣, Jetty, Undertow
웹 서버와 WAS 의 차이
웹 서버는 정적 리소스를, WAS는 애플리케이션 로직을 포함한 동적 리소스 처리한다.
사실 둘의 용어도 경계도 모호하다.
- 웹 서버도 애플리케이션 로직을 실행하는 기능을 포함하기도 함
- WAS도 웹 서버의 기능을 수행 가능
자바에서는 서블릿 컨테이너 기능을 제공하면 WAS 라고 하며 WAS는 애플리케이션 코드를 실행하는데 더 특화돼있다.
웹 서버와 WAS를 분리하는 이유는?
WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능하므로 WAS, DB 만으로도 시스템 구성이 가능하다.
그러나 주로 서버 구성 시에 웹 서버와 WAS를 분리하여 구성한다. 그 이유에 대해 알아보자.
1. WAS가 너무 많은 역할을 담당하면 서버 과부하 우려가 있다.
WAS 단독으로 사용시 정적 리소스 때문에 가장 중요한 애플리케이션 로직의 수행이 어려울 수 있다.
또한 WAS 장애 시 오류 화면 출력이 불가능하다.
2. 물리적으로 분리하여 보안을 강화한다.
WAS에는 실제 Web Application이 올라가 있기 때문에 외부와 직접 연결이 되어 있다면
중요한 설정 파일이나 리소스들이 외부로 노출될 수 있다.
이를 막기 위해서 웹 서버를 WAS앞단에 배치해서 리소스를 안전하게 보호할 수 있다.
3. 유연한 로드밸런싱이 가능하다.
정적 리소스는 웹 서버가 처리하고, WAS가 애플리케이션 로직같은 동적인 처리를 전담한다.
이에 따라 효율적인 리소스 관리가 가능해진다.
- 정적 리소스가 많이 사용되면 웹 서버 증설
- 애플리케이션 리소스가 많이 사용되면 WAS 증설
결론
웹 서버는 정적인 리소스를 제공하는 서버이고, WAS는 동적인 리소스를 제공하는 서버이다.
WAS 단독으로도 시스템 구성이 가능하지만 웹 서버와 WAS를 분리하여 구성하는 가장 큰 이유는 로드밸런싱.
'네트워크' 카테고리의 다른 글
[네트워크] JWT 란 (2) | 2023.10.04 |
---|---|
x-www-form-urlencoded와 json (0) | 2023.09.21 |
[네트워크] HTTP 요청 데이터 (0) | 2023.07.25 |
[네트워크] REST API 란? (0) | 2023.03.27 |
[네트워크] API 란? (0) | 2023.03.27 |