목차
웹 서버(Web Server)
- HTTP 기반으로 동작합니다.
- 정적인 리소스를 제공합니다. (정적 리소스: 정적(파일) HTML, CSS, JS, 이미지, 영상)
- 기타 부가 기능을 제공합니다.
- 예) NGINX, APACHE 가 있습니다.
웹 애플리케이션 서버 (WAS - Web Application Server)
- HTTP 기반으로 동작합니다.
- 웹 서버 기능을 포함합니다. (정적 리소스 제공 가능)
- 웹 서버와의 차이점은 프로그램 코드를 실행해서 애플리케이션 로직을 수행합니다. (프로그래밍을 할 수 있기 때문)
- 동적 HTML, HTTP API (JSON) 제공
- 동적 HTML: 사용자에 따라 다르게 이름이나 프로필 이미지 등을 바꿔 보여줄 수 있습니다.
- 서블릿, JSP, 스프링 MVC는 WAS에서 동작합니다.
- 동적 HTML, HTTP API (JSON) 제공
- 예) 톰캣(Tomcat), Jetty, Undertow가 있습니다.
웹 서버 vs 웹 애플리케이션 서버
웹 서버 | 웹 애플리케이션 서버 (WAS) | |
서비스 타입 | 정적 리소스 (파일) | 정적 리소스 + 애플리케이션 로직 |
에러 발생률 | 낮다 | 높다 |
예시 | NGINX, APACHE | 톰캣, Jetty, Undertow |
사실 둘의 경계는 모호합니다.
웹 서버도 프로그램을 실행하는 기능을 포함하기도 하고, 웹 애플리케이션 서버도 웹 서버의 기능을 제공합니다.
언어마다 다르지만, 자바의 경우 보통 서블릿 컨테이너의 기능을 제공하면 WAS라고 합니다.
하지만, 서블릿 없이 자바 코드를 실행하는 서버 프레임워크도 존재합니다.
최종 정리하자면, WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있습니다.
웹 시스템 구성
- WAS + DB
- Web Server + WAS + DB
WAS + DB
WAS와 DB 만으로 시스템 구성이 가능합니다.
WAS는 정적 리소스와 애플리케이션 로직 모두 제공이 가능하기 때문입니다.
단일 서버의 문제점
- WAS가 너무 많은 역할을 담당하면 서버 과부하가 우려됩니다.
따라서, 가장 비싼 애플리케이션 로직이 정적 리소스 떄문에 수행이 어려워질 수 있습니다. - 또한, WAS 장애 시, WAS에 접근조차 불가능하기 떄문에 적절한 오류 화면도 노출이 불가능합니다.
해결책: Web Server + WAS+ DB
역할 분담
- 정적 리소스는 웹 서버가 처리합니다.
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임합니다.
- WAS는 중요한 애플리케이션 로직을 전담합니다.
장점 1. 효율적인 리소스 관리
- 정적 리소스가 많이 사용된다면, Web Server를 증설합니다.
- 애플리케이션 리소스가 많이 사용된다면, WAS를 증설합니다.
장점 2. 오류 화면 제공 가능
- 정적 리소스만 제공하는 웹 서버는 잘 죽지 않습니다. 단순 파일 전송만 담당하고, 동적인 처리는 WAS에게 넘기기 때문입니다.
- 하지만, 애플리케이션 로직이 동작하는 WAS는 잘 죽습니다.
- WAS, DB 장애 시 Web Server가 오류 화면 제공이 가능합니다.
참고
만약 데이터 API만 제공한다면, Web Server는 필요 없습니다.
출처
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'Backend > Spring | SpringBoot' 카테고리의 다른 글
[Servlet] Hello 서블릿 (0) | 2023.08.17 |
---|---|
[Servlet] 서블릿과 WAS의 역할, 멀티 스레드 (0) | 2023.08.03 |
[Spring] 스프링 예제 - 주문과 할인2 (SRP, OCP, DIP 적용) (0) | 2023.07.28 |
[Spring] 스프링 예제 - 주문과 할인1 (OCP와 DIP 미적용) (0) | 2023.07.28 |
[Spring] SOLID와 스프링 (0) | 2023.07.20 |