[백엔드] 웹 서버 VS WAS(앱 서버)

2024. 5. 5. 19:24CS/백엔드

Static pages

  • image, html, css, javascript 등 컴퓨터에 저장되어 있는 파일을 의미한다.
  • 웹 서버에서 요청에 알맞은 파일을 제공한다.
  • 같은 요청에 대해 정적으로 항상 같은 페이지를 반환한다.

Dynamic pages

  • 들어온 요청에 맞게 동적으로 만들어진 콘텐츠를 의미한다.
  • 웹 애플리케이션 서버에서 제공하고, DB, 서버 내 로직 등을 활용해 만들어진 콘텐츠를 반환한다.


웹 서버

  • 웹 서버는 HTTP 요청을 받아 static contents를 제공하는 서버를 말한다.
  • 웹 컨테이너를 거치지 않고 바로 요청한 정적 컨텐츠를 제공할 수 있다.
  • 동적인 컨텐츠를 요청하는 경우, 웹 컨테이너에 요청을 보낸다.

웹 컨테이너

  • 동적인 데이터들을 처리하여, 정적인 페이지로 생성해 주는 소프트웨어 모듈이다.

티스토리에서 로그인 후 계정 관리 페이지에 들어간다고 생각해 보자. 이 페이지에서는 각 사용자별로 보여줘야 할 정보가 다르다. Dynamic page를 제공해야 한다는 뜻이고, 웹 서버와 웹 컨테이너가 모두 필요하다는 뜻이다.

실제로는, 사용자의 요청이 들어오면 웹 서버는 동적으로 처리해야 하는 부분을 컨테이너에 요청한다. 컨테이너는 동적으로 처리해야 하는 부분을 처리해서 웹 서버에 정적인 파일로 만들어 보내주는 방식으로 웹 페이지를 제공하게 되는 것이다.

 

그리고 WAS는 위의 웹 서버와 웹 컨테이너를 합친 개념을 말한다.

WAS(Web Application Server)

  • 웹 서버로부터 오는 동적인 요청을 처리하는 서버이다. 보통 웹 서버와 컨테이너를 합친 개념을 뜻한다.
  • WAS 또한 웹 서버와 동일하게 HTTP 기반으로 동작하며, 비즈니스 로직(서버사이드 코드)을 처리할 수 있다. 그 덕에 사용자에게 Dynamic page를 전달할 수 있으며 데이터베이스 서버와 같이 수행되는 경우가 많다.

정리하자면 웹 서버와 WAS는 어떤 타입의 콘텐츠를 제공하는지로 비교할 수 있다.

웹 서버는 정적인 데이터를 처리하고, 그만큼 WAS보다 빠르고 안정적이다.

WAS는 동적인 데이터를 처리하고 DB와 연결되어 사용자와 데이터를 주고받는다.

 

또, 웹 서버와 WAS는 각각 독립적으로 존재할 수 있다. 그런데 WAS는 정적인 콘텐츠도 당연히 제공해 줄 수 있다. 그렇다면 웹 서버 없이 WAS만 사용해도 되지 않을까?


Why Web Server?

1. WAS가 해야 할 일의 부담을 줄일 수 있다.

WAS 앞에 웹 서버를 두면, 웹 서버에서는 정적인 문서만 빠르게 처리하고 WAS는 비즈니스 로직에 집중하여 책임을 줄일 수 있다.

만약 WAS가 단순 정적 콘텐츠 요청까지 모두 처리한다면 부하가 커지고 동적 컨텐츠 처리가 지연될 수 있다. 따라서 단순한 정적 콘텐츠는 웹 서버에게 맡겨 기능을 분리하는 것이다.

2. WAS의 환경설정 파일을 외부로부터 보호할 수 있다.

클라이언트와 WAS가 한 포트로 연결되어 있다면 중요한 설정 파일들이 노출될 수 있다. 따라서 WAS 앞에 웹 서버를 두고, WAS에 들어오는 포트에는 방화벽을 치는 방식으로 보안을 강화할 수 있다.

'CS > 백엔드' 카테고리의 다른 글

[Backend] 쿠키와 세션, JWT의 개념과 차이점  (0) 2024.07.02