[Spring MVC] 웹 서버, 웹 애플리케이션 서버

Hoon·2022년 11월 8일

Spring

목록 보기
9/18

웹 서버 (Web Server)

웹 서버: 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 서버

  • HTTP 기반으로 동작
  • 정적(파일) HTML, CSS, JS, 이미지, 영상과 같은 정적 리소스 제공
  • 기타 부가기능

예) Nginx, Apache

웹 애플리케이션 서버 (WAS - Web Application Server)

WAS: 다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행

예) Tomcat, Jetty, Undertow

웹 서버, 웹 애플리케이션 서버의 차이

웹서버는 정적리소스를 제공하고 웹 애플리케이션 서버는 웹 서버 기능은 물론 애플리케이션 로직까지 실행할 수 있다는 점이 다르다.

사실 둘의 용어도 경계도 모호하다. 왜냐하면 웹서버도 웹 애플리케이션 기능을 포함하는 경우가 있고 웹 애플리케이션은 웹 서버의 기능을 포함하기 때문이다.

그래서 WAS는 애플리케이션 코드를 실행하는데 특화되있다고 이해하는게 맞을것이다.

웹 시스템 구성

WAS, DB

웹 시스템은 WASDB만으로 구성할 수 있다.
하지만 다음과 같은 문제가 일어날 수 있다.

  • 웹 서버 없이 WAS가 너무 많은 역할을 담당하면 서버에 과부하의 우려가 있다.
  • 중요한 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
  • WAS에 장애가 발생하면 오류 화면 조차도 띄울 수 없는 상황이 만들어진다.

웹 서버, WAS, DB

  • 정적 리소스는 웹 서버가 처리하고 애플리케이션 로직같은 동적인 수행이 필요할때 WAS에 요청을 위임한다.

  • WAS는 애플리케이션 로직 처리를 주로 전담함으로 WAS, DB만 사용한 시스템의 단점을 보완한다.

  • 리소스 관리도 효율적으로 변화 하는데, 정적 리소스가 많이 필요하면 웹 서버를 증설하고 애플리케이션 리소스가 많이 필요하면 WAS를 증설하면 되므로 두개의 리소스를 효율적으로 관리할 수 있다.

Reference

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (김영한님)

profile
개발이 즐거워

0개의 댓글