웹 서버 (Web Server)
- 정적 리소스 제공 즉, 정적 파일인 HTML, CSS, JS, 이미지, 영상 etc.
- HTML 기반으로 동작
- 웹 서버의 종류: Nginx, Apache
WAS (Web Application Server)
- 웹 서버 기능도 제공 즉, 정적 리소스도 제공 가능
- 프로그램 코드를 실행해서 비즈니스 로직 수행
- Client Side Rendering (동적 HTML), REST Api 제공
- 서블릿, JSP, Spring MVC
- WAS의 종류: Tomcat, Jetty
Web Server vs WAS
- 사실 Web Server와 WAS의 경계가 모호
- WAS는 Web Server의 기능을 포함
- 또한, Web Server도 플러그인을 통해 로직 수행 가능
- 대체적으로 자바 웹 프로그래밍에서는 서블릿 컨테이너 기능을 제공하는 서버를 WAS라고 부름
- 둘의 경계가 모호하더라도 로직을 수행하는데 더 특화되어 있는 쪽이 WAS
WAS가 Web Server 기능도 포함한다면 둘을 같이 써야 하는 이유가 있나요?
- WAS가 정적 리소스 그리고 비즈니스 로직을 모두 제공할 경우 서버 과부하 발생 가능성이 높아지며 장애 대응 힘듬
- 로직을 수행하는 데는 자원이 많이 필요하기 때문에 정적 리소스와 함께 제공할 경우 자원 부족 발생 가능
- DB가 다운되거나 비즈니스 로직 내 장애 때문에 WAS가 다운되었을 때 WAS만 있는 구조라면 에러 페이지를 제공할 수 없음
- 정적 리소스만 제공하는 웹 서버의 경우 장애를 유발할 가능성이 있는 비즈니스 로직이 없기 때문에 다운될 가능성이 현저히 낮음 (WAS나 DB 죽을 경우 에러 페이지 제공)
- 반면, 동적인 처리 즉, 비즈니스 로직을 처리하는 WAS의 경우 서버가 죽을 가능성 상대적으로 높음
- 따라서, 웹 서버와 WAS를 같이 사용하여 정적 리소스는 웹 서버가 제공하고 동적인 처리는 웹 서버가 WAS에 위임 처리하는 구조를 사용하는 것이 효율적인 구조 (업무분담이 중요)
* API 서버의 경우 화면을 제공할 필요가 없기 때문에 WAS만 사용
참고
인프런 스프링 MVC 1편 (김영한 강사님)
반응형
'면접 준비' 카테고리의 다른 글
Servlet, JSP, MVC 패턴 (0) | 2021.06.04 |
---|---|
서블릿 (Servlet) 간단 정리 (0) | 2021.05.28 |
싱글톤(Singleton) 패턴 (0) | 2021.05.16 |
객체지향 설계 원칙: SOLID 법칙 (0) | 2021.05.15 |
[Java] 정렬 (0) | 2021.04.25 |