오봉이와 함께하는 개발 블로그

스프링 MVC 1 - 웹 서버&웹 애플리케이션 서버 본문

이론

스프링 MVC 1 - 웹 서버&웹 애플리케이션 서버

오봉봉이 2022. 8. 8. 23:32
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
Comments