Web Server & WAS (Web Application Server)

otter·2023년 10월 17일

서버를 배포하고 네트워크를 구성하기 위해 이것저것 알아보다보면 Web ServerWeb Application Server라는 단어를 심심치 않게 볼 수 있다.

우선 Web Server와 WAS(Web Application Server)는 모두 HTTP 요청을 받을 수 있는 서버다.

비슷한 이름을 가진, 그리고 HTTP 통신이 가능한 두 서버는 어떤 차이점을 가질까?

Web Server

Apache, Nginx 등과 같은 소프트웨어로 유명한 웹 서버는 정적 콘텐츠를 제공하는 역할을 주로 담당한다.
정적 콘텐츠란 사용자와의 상호작용 없이 제공할 수 있는 콘텐츠를 이야기한다.

정적 콘텐츠

어떤 상황에서도 클라이언트가 항상 같은 응답을 기대할 수 있는 콘텐츠

  • HTML 문서
  • CSS
  • JS 파일
  • Image 파일

그렇다면 사용자의 입력값, 동작에 따라 응답이 유동적으로 변화해야 하는 동적 콘텐츠는 어디서 관리할까?

WAS (Web Application Server)

웹 애플리케이션 서버는 DB와 상호작용이 필요하거나, 연산을 진행하는 등 동적인 로직의 실행을 담당한다.

프로그래밍 언어로 작성된 서버측 애플리케이션(PHP, Java, NodeJS)를 실행하고 클라이언트 측 요청에 따른 동적 콘텐츠 생성, 전달이 주 역할이다.
그 응답은 주로 HTML과 DB에서 추출한 데이터를 조합하여 생성하는데, 바로 웹 페이지다.

대부분의 웹 애플리케이션은 웹 서버를 내장하고 있다.
즉, WAS 또한 정적 콘텐츠를 응답으로 돌려주는 것도 가능하다는 이야기.

그렇다면 WAS에서 웹 서버의 역할이 대체 가능하기 때문에 웹 서버는 사용되지 않는걸까?

Web server와 WAS

정적 콘텐츠와 동적 콘텐츠의 제공을 모두 WAS에만 의존한다면 과도한 부하를 야기 시킨다.
이는 곧바로 성능의 저하와 같은 문제를 마주하게 될 것이다.

때문에 정적 콘텐츠는 웹 서버, 동적 콘텐츠는 WAS, 명확하게 분리하여 사용하는 것이 더 유리할 것이다.

각 역할을 분리, 조합하여 가장 높은 시너지를 낼 수 있는 방식 중 하나는 바로
Web server를 WAS의 Reverse proxy로 활용하는 것이다.

Reverse proxy

실제 로직을 처리하는 Web Application Server 앞 단계에 배치된 서버

  • 로드 밸런싱: 리버스 프록시는 클라이언트 요청을 여러 웹 애플리케이션 서버로 분산시키는 로드 밸런싱 역할을 수행합니다. 이를 통해 부하를 분산하고 시스템의 안정성을 높일 수 있습니다.
  • SSL 암호화: 리버스 프록시는 클라이언트와의 통신에서 SSL 암호화를 처리할 수 있으며, 이를 통해 보안 연결을 제공할 수 있습니다.
  • 캐싱: 리버스 프록시는 정적 콘텐츠를 캐싱하여 반복적인 요청에 대한 응답 성능을 향상시킬 수 있습니다.
  • 보안 및 인증: 리버스 프록시는 웹 애플리케이션 서버에 대한 인증을 처리하고, 보안 정책을 적용하여 악성 요청을 필터링할 수 있습니다.

WebServer&WAS

클라이언트(브라우저)와 WAS 간의 중간 계층 역할을 Web server에게 일임한다면 보안, 성능 측면에서 이점을 기대할 수 있을 것이다.

이름역할제공 콘텐츠
Web Server정적 콘텐츠의 서빙, Reverse proxy정적 콘텐츠
WAS동적 로직 수행, 동적 데이터 생성정적, 동적 콘텐츠

초기 단계의 작은 서비스는 WAS 하나로 충분히 운영이 가능할 것이다.
서비스가 성장함에 따라 보안, 부하 분산 등 여러 상황을 고려해야 하는 때가 온다면 이 내용은 반드시 알고 있어야 할 내용일 것이다.

0개의 댓글