본문 바로가기

TIL

[TIL 2024. 05. 02] 웹 서버 | 웹 애플리케이션 서버

모의면접을 준비하면서도 헷갈렸던 웹 서버와 웹 애플리케이션 서버에 대해서 정리해본다.

 

웹 서버(Web Server)

  • 정적 컨텐츠를 제공 -> WAS를 거치지 않고, 바로 요청한 컨텐츠를 제공할 수 있다
  • 동적인 컨텐츠의 제공을 위한 요청을 전달하기도 함

마치 우리가 주기억장치에서 데이터를 가져오는 것의 비효율성을 극복하기 위해 캐시메모리를 쓰는 것과 유사한 원리이다.

 

즉, 사용자와의 상호작용이 필요하지 않고, 모든 사용자에게 동일한 데이터를 반환하면 될 때는 굳이 DB까지 hit하지 않고, 앞단에 위치하는 웹 서버 차원에서 바로 요청에 대한 결과를 반환해주는 것이다.

 


 

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

  • 클라이언트의 요청에 따라 동적인 컨텐츠를 제공하는 서버(프로그램)
  • 정적 컨텐츠 처리 외의 거의 모든 처리를 담당
    • 알고리즘, 비즈니스 로직, DB 조회 등
  • Tomcat: JAVA SPRING 기반의 WAS
  • Django: Python 기반의 WAS
    • Django는 파이썬 기반의 웹 프레임워크인 동시에 파이썬으로 작성된 웹 애플리케이션을 구동하는데 사용되는 웹 애플리케이션 서버(WAS)의 역할도 수행

 

 

 


 

WSGI (Web Server Gateway Interface)

-웹 서버와 웹 프레임워크를 중계해주는 인터페이스
-개발환경에서는 Django만을 WAS로 사용할 수 있지만, 배포환경(Production환경)에서는 WSGI가 쿠션 역할을 해줘야 한다
-> Django의 runserver는 production 환경에서는 보안상, 성능상, 효율상 적합하지 않음

즉, 배포환경에서 클라이언트의 Request요청이 많아지더라도 이를 효율적으로 처리하기 위해서는 WSGI가 필요하다. 정리하면, 웹 서버나 WSGI나 WAS의 부하를 줄여주는 역할을 수행한다.