Back-End/Spring

[Spring MVC][웹 애플리케이션 이해] - 1. 웹 서버와 웹 애플리케이션 서버

얄루몬 2022. 2. 28. 18:10

💻본 포스팅은 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한'님의 강의를 듣고 작성되었습니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

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

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

www.inflearn.com


[웹 - HTTP 기반]

  • 클라이언트가 서버에 요청
  • 서버가 클라이언트의 요청에 응답
  • 이 모든 것들이 HTTP 프로토콜 기반 운영 된다.
  • 즉 모든 것이 HTTP라는 뜻이고 HTTP 메시지에 모든 것을 전송한다는 의미다.
    • HTML, TEXT
    • IMAGE, 음성, 영상, 파일
    • JSON, XML 등의 데이터 API
    • HTTP로 거의 모든 형태의 데이터 전송이 가능하다.
    • 서버간의 데이터를 주고 받을 때도 HTTP를 대부분 사용한다.

 

 

[웹 서버(Web Server)]

  • 웹 서버 역시 HTTP 기반으로 동작한다.
  • 정적 리소스를 제공하고 기타 부가 기능을 제공한다.
    • 정적 파일 HTML, CSS, JS, 이미지, 영상 등...
  • 예) NGINX, APACHE 등이 웹서버의 대표 예시다.

 

 

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

  • HTTP 기반으로 동작한다.
  • 웹 서버 기능을 포함 한다.(정적 리소스를 제공해주는 기능을 웹 애플리케이션 서버도 제공 가능하다.)
  • 프로그램 코드를 실행해서 애플리케이션 로직을 수행해준다.
    • 동적 HTML, HTTP API(JSON, XML 등)
    • 서블릿, JSP, 스프링MVC
  • 예) 톰캣(Tomcat) Jetty, Undertow가 웹 애플리케이션 서버의 예시이다.

 

 

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

웹 서버(Web Server) 웹 애플리케이션 서버(WAS)
정적 리소스(파일) - 애플리케이션 로직
- 자바는 서브릿 컨테이너 기능을 제공하면 WAS라고 본다.
- 애플리케이션 코드를 생행하는 것에 더 특화되어 있다.
  • 이때 사실 둘의 용어도 경계도 모호하다.
    • 웹 서버도 프로그램을 실행하는 기능을 포함할 때도 있다.
    • 웹 애플리케이션 서버도 웹 서버의 기능을 제공할 수 있다..
    • 이러한 이유들로 경계가 모호하다고 한다.

 

 

[웹 시스템 구성]

[WAS + DB]

  • WAS와 DB 만으로도 시스템 구성이 가능하다.
  • WAS는 정적 리소스, 애플리케이션 로직을 모두 제공하기 때문에 WAS와 DB만으로도 시스템을 구성가능한 것이다.
  • 그러나 WAS가 너무 많은 역할을 하게 되면 과부하가 일어나게 된다.
    • 작은 규모에서만 사용할 것을 권장한다.
  • 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려워질 수 있다.
  • WAS 장애가 일어나면 오류 화면도 노출이 불가능하다. (= HTML로 오류 화면을 띄우는 등의 대처가 불가하다는 말이다.)

 

 

[WebServer + WAS + DB]

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

 

 

[웹 시스템 구성 - Web Server + WAS + DB의 이점]

  • 효율적으로 리소스 관리가 된다.
    • 정적 리소스를 많이 사용한다면 Web Server만 증설해주면 된다.
    • 애플리케이션 리소스가 많이 사용되면 WAS만 증설해주면 된다.
  • 정적 리소스만 제공하는 웹 서버는 잘 죽지 않는다. 반면에 애플리케이션 로직이 동작하는 WAS는 잘 죽는다.
    • WAS, DB의 장애가 일어날 때 웹 서버가 오류 화면을 제공 가능 하다.
    • 오류화면 HTML을 설정해놓은 뒤 WAS, DB 오류 발생 시 이를 띄운다.
  • 이때 화면 없이 데이터 API만 주고 받는 상황이라면 Web 서버가 따로 필요하지 않다. 

 

 

[웹 서버란?]

https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server

 

웹 서버란 무엇일까? - Web 개발 학습하기 | MDN

여기서 우리는 웹 서버가 무엇인지, 어떻게 동작하는지, 왜 중요한지를 알아볼 것입니다.

developer.mozilla.org