오봉이와 함께하는 개발 블로그
스프링 MVC 1 - 웹 서버&웹 애플리케이션 서버 본문
728x90
웹 서버, 웹 애플리케이션 서버
- 웹은 HTTP 기반으로 통신을 한다.
- HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송 가능하고 모든 것을 HTTP 메시지에 전송한다.
- 서버간 데이터를 주고 받을 때도 대부분은 HTTP를 사용한다.
웹 서버(Web Server)
- HTTP 기반으로 동작한다.
- 정적 리소스, 기타 부가 기능을 제공한다.
- HTML, CSS, JS, 이미지, 영상 등의 파일 등이 정적 리소스다.
- 특정 디렉토리에 정적 리소스를 두면 서버는 요청한 클라이언트에 서빙을 한다.
- 대표적으로 Nginx, Apache가 있다.
웹 애플리케이션 서버(Web Application Server - WAS)
- HTTP 기반으로 동작한다.
- 웹 서버 기능을 대부분 포함한다.
- 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있는 것이 웹 서버와의 차이점이다.
- 동적 HTML, HTTP API(JSON)
- 서블릿, JSP, 스프링 MVC
- 대표적으로 Tomcat, Jetty, Undertow가 있다.
웹 서버, 웹 애플리케이션 서버 차이
- 웹 서버는 정적 리소스만 제공하지만 WAS는 애플리케이션 로직을 수행할 수 있는 기능도 있다.
- 사실 둘의 용어도 경계도 모호하다.
- 웹 서버도 프로그램을 실행하는 기능을 포함하기도 한다.
- WAS도 웹 서버의 기능을 제공한다.
- 자바는 서블릿 컨테이너 기능을 제공하면 WAS다.
- 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있다.
- WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다.
웹 시스템 구성 - WAS, DB
- WAS, DB 만으로 시스템 구성이 가능하다.
- WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능하다.
- WAS가 정적 리소스, 애플리케이션 로직 모두 제공하기 때문에 너무 많은 역할을 담당한다.
- 서버 과부하가 우려된다.
- 정적 리소스는 저렴하지만, 어플리케이션 로직은 가격이 비싸다.
- WAS에서 과부하가 생기면 정적 리소스도 WAS에서 같이 제공하기 위해 애플리케이션 로직을 제공하지 못 할 수도 있다.
- WAS에서 장애가 발생하면 오류 화면도 노출이 불가능하다.
웹 시스템 구성 - WEB, WAS, DB
- 그래서 일반적으로 위와 같이 웹 시스템을 구성한다.
- 정적 리소스는 웹 서버가 처리한다.
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.
- WAS는 중요한 애플리케이션 로직 처리를 전담한다.
- 효율적으로 리소스를 관리할 수 있어진다.
- 정적 리소스가 많이 사용되면 웹 서버를 증설
- 애플리케이션 리소스가 많이 사용되면 WAS 증설
- 정적 리소스만 제공하는 웹 서버는 장애 발생할 확률이 매우 낮다.
- 애플리케이션 로직이 동작하는 WAS는 장애 발생할 확률이 상대적으로 높다.
- WAS, DB에서 장애가 발생하면 WEB 서버가 오류 화면을 제공할 수 있는 장점이 생긴다.
- 참고
- 더 나아가면 CDN(정적 리소스를 캐시할 수 있는 서버)를 기반으로 제공할 수 있다.
- API 서버만 제공하게 된다면 웹 서버는 필요없다.
출처 : 인프런 김영한 지식 공유자님 강의 - 스프링 MVC 1편 백엔드 웹 개발 핵심 기술
728x90
'이론' 카테고리의 다른 글
스프링 MVC - 자바 백엔드 웹 기술 역사 (0) | 2022.08.09 |
---|---|
스프링 MVC 1 - HTML, HTTP API, CSR, SSR (0) | 2022.08.09 |
HTTP - 캐시와 조건부 요청 헤더, 프록시 캐시, 캐시 무효화 (0) | 2022.08.08 |
HTTP - 검증 헤더와 조건부 요청 (캐시) (0) | 2022.08.08 |
HTTP - 캐시 기본 동작 (0) | 2022.08.08 |
Comments