WAS와 웹 서버의 차이점은 무엇인가요?

박준서·2025년 1월 16일
2

Web

목록 보기
14/16
post-thumbnail

웹 서버는 정적 컨텐츠(HTML, CSS, JS, 이미지 등)를 제공하는 역할을 수행한다. 동적 컨텐츠 요청 시 요청을 WAS로 전달할 수도 있다. 대표적인 웹 서버로는 Apache, Nginx 등이 있다.

WAS는 서블릿 컨테이너 기능을 제공하고, 동적 컨텐츠를 생성하거나, 애플리케이션 로직을 실행하는 데 특화되어 있다. 대표적인 WAS로는 Tomcat이 있다.

정리하자면, 웹 서버정적 컨텐츠 제공에 특화되어 있고, WAS동적 컨텐츠 생성과 데이터 처리에 특화되어 있다.

💡WAS도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유는 무엇일까요?

WAS가 너무 많은 역할을 담당하면 과부하가 될 수 있다. 웹 서버를 따로 분리하면 WAS는 중요한 애플리케이션 로직에 집중할 수 있으며, 웹 서버는 정적 리소스를 처리하면서 업무 분담이 가능하다.

또한, 시스템 리소스를 효율적으로 관리할 수 있다. 정적 컨텐츠가 많이 사용되는 경우에는 웹 서버를 증설하고, 애플리케이션 자원이 많이 사용되면 WAS를 증설하면 된다. 이 외에도 로드 밸런싱을 하거나, 캐싱 및 압축, HTTPS 등을 웹서버에서 처리하도록 할 수 있다.

좀 더 자세히

Web Server

웹 서버는 클라이언트(사용자)가 브라우저 주소창에 url을 입력하여 어떤 페이지를 요청하면, http 요청을 받아 들여 HTML 문서와 같은 정적 콘텐츠를 사용자에게 전달해주는 역할을 한다.

웹 서버의 임무는 대표적으로 2가지로

  1. 단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다.
  2. 사용자로부터 동적인 요청이 들어왔을 때, 해당 요청을 웹 서버 자체적으로 처리하기 어렵기 때문에 WAS에게 요청한다.
    1. 대표적인 웹 서버 종류 : Apache, Nginx, IIS (window 전용 웹 서버)

WAS (Web Application Server)

WAS 또한 웹 서버와 동일하게 HTTP 기반으로 동작한다. 웹 서버가 할 수 있는 기능 대부분이 WAS에서도 처리가 가능하며, 비즈니스 로직 (서버 사이드 코드) 을 처리할 수 있어 사용자에게 동적인 콘텐츠를 전달할 수 있다. 주로 데베 서버와 같이 수행된다.

차이점

기능적으로 동일한 영역도 있고 WAS가 웹 서버 기능의 많은 부분을 포함하여 수행하지만 사용의 ‘목적’이 다르다.

웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 HTML 같은 정적 리소스들을 전달하며, WAS만을 이용할 때 보다 빠르고 안정적으로 기능을 수행한다.

반면 WAS는 동적인 데이터를 위주로 처리하는 서버이다. DB와 연결되어 사용자와 데이터를 주고받고, 조작이 필요한 경우 WAS를 활용한다.

추가

웹 서버 만으로도 분명 동적인 요청 처리가 가능하다. 예를 들면 PHP의 경우 WAS 없이 아파치나 Nginx 만을 통해서 동적인 요청 처리가 가능하다. 그걸 가능 하게 해주는 것이 CGI 인데, 웹 서버에 별도로 저장해줘야 한다.

CGI는 이름 그대로 인터페이스로서, 웹 서버상에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램 (또는 스크립트) 이다.

CGI

동적 컨텐츠를 제공하기 위해 웹 서버 내에 프로그래밍 기능이 들어가는 방식이다.

즉, PHP, Perl, Python 등의 언어들을 CGI를 구현해놓았기 때문에 아파치에서 다양한 언어로 짜인 각 프로그램을 실행할 수 있다. 예를들어, 아파치에게 PHP 모듈을 설치했을 경우, 요청이 왔을 때 아파치는 HTTP 헤더를 분석하고 파싱하여 PHP로 파라미터를 넘겨준다. 그러면 PHP에서는 파라미터를 받아 응답할 HTML 문서를 만들어 아파치에게 전달한다.

HTML 문서를 전달받은 아파치는 CSS, JS, IMG 등 정적인 자원들과 함께 브라우저로 반환해준다. 하지만 이 역시 CGI 효율이 떨어진다. CGI 만으로는 규모가 큰 웹 서비스를 구현하기는 사실상 어렵다.

많은 프로그래머들이 JAVA를 견고한 언어라고 평가하는 이유도 여기에 있다. 자바 서블릿은 CGI를 사용하지 않는다. 그래서 WAS에 대해 설명할 때 대표적으로 자바, 톰캣, 아파치로 예시를 든다.

References

https://yozm.wishket.com/magazine/detail/1780/

profile
Back-End Developer

2개의 댓글

comment-user-thumbnail
2025년 1월 16일

좋은글 감사합니다~

답글 달기
comment-user-thumbnail
2025년 1월 22일

좋은 글 감사합니다. cgi는 보안상의 이슈가 있다고 들었던것 같네요

답글 달기

관련 채용 정보