[Web] Web Server vs WAS

박성우·2023년 7월 15일
0

Web

목록 보기
1/3

Web Server와 WAS(Web Application Server)의 차이에 대해 간단하게 알아보자.

Web Server

  • HTTP 요청에 정적 컨텐츠를 제공하는 서버
  • HTML, CSS, 이미지, 파일 등 변하지 않는 데이터를 제공
    ex) Apache HTTP Server, NginX

WAS (Web Application Server)

  • HTTP 요청에 동적 컨텐츠를 제공하는 서버
  • 다양한 로직 처리 및 데이터베이스 연동
    ex) Apache Tomcat, JBoss, Jeus

쉽게 말해서, 네이버 메인 페이지를 예로 들어서 보면 유저마다 다르게 보이는 빨간색 칸 안의 일부 개인정보들은 WAS로부터 로드되는 동적인 정보이고 모든 유저들에게 공통적으로 보여지는 나머지 부분들은 Web Server로부터 로드되는 정적인 정보라고 볼 수 있다는 것이다.

그렇다면 Web Server와 WAS가 둘 다 존재하지 않으면 우리는 애플리케이션 서버를 구축할 수 없을까?

Web Server나 WAS를 따로 설치한 적도 없고 Gradle로 스프링 프로젝트를 빌드해서 배포하면 잘만 동작하던데?

일반적으로 프로젝트를 빌드하면 JAR 파일이 생성되고 이 파일을 배포하게 되는데, JAR 파일을 WAS 서버(Apache Tomcat)를 내부적으로 포함하고 있기 때문에 애플리케이션이 WAS 서버로 동작한다. (WAR 파일은 포함 X)

또한, WAS 서버만으로도 동작할 수 있는 이유는 WAS 서버는 Web Server와 Web Container로 이루어져있고 정적인 컨텐츠 처리 또한 가능하다.

그럼 Web Server가 필요없는 것 아닌가?

Web Server는 단순히 정적인 컨텐츠 제공만을 위한 것이 아닌 다양한 기능을 수행할 수 있기 때문에 필요하다.

  1. 기능 분리
    WAS에 데이터베이스 작업 및 동적 로직 처리를 맡기고, 나머지 정적 컨텐츠들은 Web Server에 처리를 맡겨서 서버 부하를 방지할 수 있다.

  2. Web Server를 리버스 프록시(Reverse Proxy) 서버로 사용

  • 로드 밸런싱 (Load Balancing)
    여러 대의 WAS를 동시에 운영해서 분산 처리
    -> Health Check를 통해 주기적으로 서버 관리

  • 서버 보안 강화
    Web Server를 거치기 때문에 중요한 데이터를 다루는 실제 WAS 서버의 IP 주소를 노출 X

  • SSL 암호화
    클라이언트와 HTTPS 통신을 해서 기존 WAS 서버가 해야하는 SSL 암/복호화를 대신해서 서버의 부담 감소
    -> 클라이언트와는 HTTPS 통신을, WAS 서버와는 HTTP 통신 가능

그 외에도 요청 캐싱 기능이나 fail over, fail back 등 WAS의 부담을 최대한 덜어줌과 동시에 무중단 운영을 위한 장애 극복에도 큰 역할을 하기 때문에 대용량 웹 애플리케이션에서는 거진 필수적이라고 볼 수 있다.


Reference

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://www.youtube.com/watch?v=mcnJcjbfjrs&t=203s

profile
Backend Developer

0개의 댓글