본문 바로가기

Spring

웹 서버와 WAS

 

1) 웹 서버란?

- 웹 서버의 특징은 다음과 같습니다.

  (1) HTTP를 기반으로 동작합니다.

  (2) 주로 정적 리소스를 제공하고, 기타 부가 기능을 제공합니다. 

  -> 정적 리소스에는 HTML, CSS, JS, 이미지, 영상 등이 포함됩니다. 

  (3) 대표적인 예에는 Nginx, Apache 등이 있습니다. 

 

 

2) WAS(Web Application Server)란?

- WAS의 특징은 다음과 같습니다.

  (1) HTTP를 기반으로 동작합니다. 

  (2) 웹 서버의 기능을 대부분 포함하면서, 프로그램 코드를 실행해서 애플리케이션 로직을 수행합니다. 

  (3) 서블릿, JSP, 스프링 MVC 등이 WAS에서 동작합니다. 

  (4) 대표적인 예에는 Tomcat, Jetty, Undertow 등이 있습니다. 

 

3) 웹 서버와 WAS의 차이점 

- 웹 서버와 WAS의 차이점은 다음과 같습니다.

  (1) 웹 서버는 정적 리소스, WAS는 애플리케이션 로직을 실행할 수 있습니다. 

  (2) 사실은 둘의 경계가 다소 모호합니다. 

     -> 웹 서버도 프로그램을 실행하는 기능을 포함하기도 합니다. 

     -> WAS도 웹 서버의 기능을 제공합니다. 

  (3) 자바는 서블릿 컨테이너 기능을 제공하면 WAS라고 합니다. 

  (4) WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있습니다. 

 

 

4) 웹 시스템 구성

- 일반적으로 웹 시스템은 WAS, DB만으로 시스템 구성합니다. 

  WAS는 정적 리소스, 애플리케이션 로직을 모두 제공 가능합니다. 

-> 단, 이렇게 WAS가 너무 많은 역할을 담당을 하면,

    (1) 서버 과부하에 대한 우려가 있습니다.

    (2) 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 불가능할 수 있다는 문제가 있습니다.  

-> 또한, WAS 장애 시 오류 화면도 노출 불가능하다는 문제가 있습니다.     

 

- 이러한 경우 웹 시스템 구성을 웹 서버- WAS - DB로 구성할 수 있습니다. 

  웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임하고,

  WAS는 중요한 애플리케이션 로직을 처리합니다. 

-> 이렇게 구성하면 추가적으로 효율적인 리소스 관리가 가능합니다.  

     (1) 정적 리소스가 많이 사용되면 웹 서버를 증설하고,

     (2) 애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 됩니다. 

-> 또한, 정적 리소스만 제공하는 웹 서버는 잘 죽지 않고,

     애플리케이션 로직이 동작하는 WAS 서버는 잘 죽습니다.

     만약에 WAS나 DB에 장애가 발생하면 웹 서버가 오류 화면을 제공할 수 있습니다.  

-> 요즘에는 CDN이라는 정적 리소스를 캐싱할 수 있는 서버를 둡니다. 

 

참고

김영한 스프링 MVC 1편

'Spring' 카테고리의 다른 글

의존관계 자동 주입  (0) 2022.08.21
컴포넌트 스캔  (0) 2022.08.19
스레드 풀  (0) 2022.08.14
싱글톤 컨테이너  (0) 2022.08.13
Spring 로깅  (0) 2022.08.08