본문 바로가기
Backend/Spring | SpringBoot

[Spring] 웹 서버, 웹 애플리케이션 서버, 웹 시스템 구성

by 2245 2023. 8. 3.

목차

     

    웹 서버(Web Server)

    • HTTP 기반으로 동작합니다.
    • 정적인 리소스를 제공합니다.  (정적 리소스: 정적(파일) HTML, CSS, JS, 이미지, 영상)
    • 기타 부가 기능을 제공합니다.
    • 예) NGINX, APACHE 가 있습니다.

     

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

    • HTTP 기반으로 동작합니다.
    • 웹 서버 기능을 포함합니다. (정적 리소스 제공 가능)
    • 웹 서버와의 차이점은 프로그램 코드를 실행해서 애플리케이션 로직을 수행합니다. (프로그래밍을 할 수 있기 때문)
      • 동적 HTML, HTTP API (JSON) 제공
        • 동적 HTML: 사용자에 따라 다르게 이름이나 프로필 이미지 등을 바꿔 보여줄 수 있습니다.
      • 서블릿, JSP, 스프링 MVC는 WAS에서 동작합니다.
    • 예) 톰캣(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

     

    스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

    웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원

    www.inflearn.com