Spring MVC/웹 애플리케이션 이해

웹 서버, 웹 애플리케이션 서버(WAS)

운동하는 주니어개발자 2023. 5. 2. 15:34

클라이언트에서 서버로 데이터를 전송할 때 서버에서 클라이언트로 데이터를 응답할 때 모두 HTTP를 기반으로 데이터를 전송하고 응답한다. 그러므로 모든것이 HTTP를 기반으로 전송을 하고 응답을 하게 된다.

예를 들어 HTML, TEXT, IMAGE, 음성, 영상, 파일 등이나 요즘에 많이 사용하는 API의 문서양식인 JSON, XML등이 있다.

거의 모든 형태의 데이터 전송이 가능하고 서버간에 데이터를 주고 받을 때도 대부분 HTTP 프로토콜을 사용한다.

 

웹서버(Web Server)

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적HTML, CSS, JS, 이미지 등등
  • EX) NGINX, APACHE

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

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함 + (정적 리소스 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
    - 동적 HTML, HTTP API
    - 서블릿, JSP, Spring MVC패턴
  • EX) 톰캣 Jetty, Undertow 등이 있다.

웹 서버, 웹 애플리케이션 서버(WAS) 차이

  • 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직
  • 사실은 둘의 용어도 경계도 모호함
    - 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함
    - 웹 애플리케이션 서버도 웹 서버의 기능을 제공함
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
    - 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있음
  • WAS는 애플리케이션 코드를 실행하는데 더 특화되있음

웹 시스템 구성 - WAS, DB

  • WAS, DB만으로 시스템 구성이 가능
  • WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능

다음과 같이 웹 시스템을 구성할 수 있지만 위와 같이 구성을 하게되면 이러한 문제들이 발생할 수 있다.

  • WAS가 너무 많은 역할을 담당하므로 서버 과부하가 우려된다.
  • 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
  • WAS 장애시 오류 화면도 노출이 불가능하다.

다음과 같은 문제들을 해결하기 위해 보통 아래와 같이 구성하게 된다.

웹 시스템 구성 - WEB, WAS, DB

  • 정적 리소스는 웹 서버가 처리
  • 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청
  • WAS는 중요한 애플리케이션 로직 처리 전담

다음과 같이 HTML, CSS, 이미지 등 정적 리소스는 Web Server에서 처리하고 애플리케이션 로직같이 Web Server에서 처리하지 못하는 것은 WAS로 전송한다. 이렇게 구성했을 때 정적 리소스만 제공하는 웹 서버는 잘 죽지 않지만 애플리케이션 로직이 동작하는 WAS서버는 잘 죽는다. 이러한 문제가 생겼을 때 Web Server를 앞에 배치하지 않을 경우 WAS 장애시 오류 화면 노출이 불가능 하지만 Web Server가 응답을 받지 못하면 WAS에 문제가 있는 것으로 판단하고 Web Server에서 오류 메세지를 띄어주도록 설정이 가능하다. 또한

  • 효율적인 리소스 관리가 가능하고
  • 정적 리소스가 많이 사용되면 Web서버만 애플리케이션 리소스가 많이 사용되면 WAS만 증설과 같이 원하는 서버만 증설해 사용할 수 있다.

'Spring MVC > 웹 애플리케이션 이해' 카테고리의 다른 글

HTML, HTTP API, SSR, CSR  (0) 2023.05.02
서블릿, 동시 요청 - 멀티 쓰레드  (0) 2023.05.02