2022.01.09

초보개발·2022년 1월 9일
0

TIL

목록 보기
12/17
post-thumbnail

웹 서버, 웹 앱 서버

1-1. HTTP

html, 텍스트, 이미지, 음성, 영상, json 등 거의 모든 확장자의 데이터를 전송할 수 있으며 서버 간 데이터를 주고 받을 때에도 대부분 HTTP 프로토콜을 사용한다.

1-2. 웹 서버

HTTP 기반으로 동작하며 특정 디렉토리에 정적 리소스 파일(html, css, js, 이미지, 영상 등)을 보관해 두면 서버에서 파일들을 클라이언트로 전송해준다. 즉, HTTP 프로토콜로 파일을 주고 받을 수 있다!

ex) 대표적 웹 서버 : NGINX, APACHE

1-3. 웹 애플리케이션 서버(WAS)

HTTP 기반으로 동작하며 웹 서버 기능을 포함한 다른 기능들을 제공한다. 프로그램 코드를 실행해서 애플리케이션 로직을 수행한다. 프로그래밍을 하므로 사용자마다 다른 화면을 제공할 수 있다. (동적)

  • 동적인 HTML, HTTP API(json)
  • 서블릿, jsp, 스프링 mvc

ex) 톰캣, jetty

1-4. 웹 서버와 웹 앱 서버의 차이

웹 서버는 정적 리소스(파일 단위)를 제공하지만 WAS는 애플리케이션 로직까지 실행할 수 있다. 사실, 둘의 용어와 경계도 모호하다고 볼 수 있는데, 웹 서버도 프로그램을 실행하는 기능을 포함하기도 하고 WAS도 웹 서버의 기능을 제공하기 때문이다.

그중, 자바는 서블릿 컨테이너 기능을 제공하면 WAS라고 한다. 요즘, 서블릿 없이 자바코드를 실행하는 서버 프레임 워크도 존재한다.

WAS는 애플리케이션 코드를 실행하는데 더 특화되었다고 생각하면 된다~

1-5. 웹 시스템 구성 - WAS, DB

WAS와 데이터베이스 만으로도 시스템 구성이 가능하다. WAS는 정적 리소스와 애플리케이션 로직 둘 다 제공하기 때문이다.

하지만, WAS가 너무 많은 역할을 담당하게 되면 서버 과부하 문제가 발생할 수 있다. 가장 비싼 애플리케이션 로직이 정적 리소스라서 수행하는데 어려울 수 있으며 WAS가 장애가 나면 오류 화면도 노출시킬 수 없는 단점이 있다.

1-5-1. 웹 시스템 구성에 WEB 서버 추가

위의 문제를 해결하기 위해 웹 서버를 WAS 앞에 추가해서 정적 리소스들을 처리할 수 있도록 구조를 바꾼다. 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임시키면 되고 WAS는 중요한 애플리케이션 로직 처리를 전담하게 둔다.

정적 리소스를 제공하는 웹 서버는 왠만해선 장애가 발생하지 않는데 애플리케이션 로직이 동작하는 WAS는 잘 다운된다. 따라서 WAS와 데이터베이스에서 장애가 발생할 때, 웹 서버에서 관련 오류 화면을 제공해 줄 수 있게 된다.

0개의 댓글