다오의 개발일지

Web server, WAS(web application server) | 김영한 MVC1편 본문

Spring/스프링 MVC 1편 | 김영한

Web server, WAS(web application server) | 김영한 MVC1편

다오__ 2024. 9. 19. 19:10

web은 기본적으로 서버와 클라이언트의 구조를 가진다. 서버는 클라이언트의 요청을 확인하고 이에 맞는 올바론 응답을 전달한다.  그러면 어떻게 서버는 클라이언트가 어떤 요청을 보냈는지, 다양한 요구에 올바르게 응할 수 있을까?

 

HTTP (Hyper Text Transfer Protocol)

web은 HTTP통신이라는 것을 통해 서버와 클라이언트들이 서로 통신을 한다. HTTP는 서버와 클라이언트간의 통신 방법이라고 생각하면 된다. HTTP의 요청방식에는 여러가지 형식이 있는데 클라이언트는 이 형식에 맞게끔 요청을 보낼 수 있다. 컴퓨터의 통신에는 정말 많은 종류의 프로토콜이 있지만 웹은 HTTP를 사용하여 통신한다는 점을 기억하자.

 

모든 것이 HTTP.

클라이언트는 HTTP 메시지에 모든 것을 전송할 수 있다.

 

웹 서버(Web Sever)

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적(파일) HTML, CSS, JS, 이미지, 영상
  • 예) NGINX, APACHE

정적 리소스? 정적 파일? 

우리가 구글에 검색을 해서 검색 결과를 얻으려면 서버는 해당 검색어를 통해 수많은 알고리즘을 통해 관련 결과를 도출해낸다. 하지만 웹 서버는 이러한 기능을 할 수 없다. 어떤 알고리즘이나 요청을 처리하여 다른 결과를 보여주는 것이 아닌, 말 그대로 정적인, 항상 같은 결과를 응답할 수 밖에 없다. 인터넷 사전, 백과사전 등을 생각하면 편하다, 이미 정해져있고 앞으로 변하지 않을만한 것들을 우리는 정적 리소스, 정적 파일이라고 한다.

 

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

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
    • 동적 HTML, HTTP API(JSON)
    • 서블릿, JSP, 스프링 MVC
  • 톰캣, Jetty, Undertow

우리가 주목해야할 것은 WAS이다. 정적인 리소스, 정적 파일만을 응답하는 웹 서버와는 반대로, 동적인 처리(알고리즘)를 통해 사용자별로 다른 응답을 도출해낼 수 있는 기능을 한다.

 

음식점으로 비유하면, 웹 서버는 메뉴판(정적 리소스)만을 전달할 수 있는 서버지만, WAS는 손님마다 각각 다른 음식을 주문하면 요청한 손님마다 다른 음식들을 전달할 수 있다.

 

최소한의 웹 시스템 구성 - WAS, DB

WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능하기 때문에 WAS만으로 웹시스템을 구성할 수 있다. 하지만, WAS가 너무 많은 역할을 담당하면서, 서버의 과부하가 올 수 있다. 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다. WAS 장애 시 오류 화면도 노출 불가능하다. 비용 또한 증가한다.

 

따라서, 일반적으로 웹서버와 WAS를 같이 사용하여 부담을 줄인다.

 

 

업무를 분담할 수 있어, 예외상황에 유연하게 대응이 가능하다.

WAS나 DB의 서버에 에러가 생기면, 웹서버가 에러페이지를 내보내 상황을 알릴 수 있다.