개발일기

WEB 서버와 WAS(Web Application Server)의 차이

미냠 2023. 10. 15. 21:04

이번 포스팅으로는 WEB 서버와 WAS의 차이점을 알아보도록 하겠다.

지난 번 포스팅에서 DNS의 개념과 동작과정에 대한 내용을 정리했었다.

이전 포스팅에서 DNS에 관한 포스팅을 올렸는데 해당 포스팅을 먼저 읽어보길 추천한다.

https://miny-dev.tistory.com/6

 

그래서 클라이언트에서 도메인을 검색했고 컴퓨터에서는 DNS를 이용해서 ip주소를 알아냈는데

그 ip주소가 어떻게 웹 페이지로 보여지게 되는거지?

에 대한 고민을 해본 적이 있나?

이를 이해하기 위해서는 WEB 서버와 WAS의 정의부터 알아야 한다.

먼저 WEB 서버의 의미는 소프트웨어, 하드웨어적으로 나눠서 정의할 수 있다.

소프트웨어적으로는 웹 브라우저에서 클라이언트에서 요청된 HTTP Request를 받아드리고

그에 맞는 정보를 Response를 해주는 프로그램이라고 할 수 있다.

하드웨어적으로는 앞서 말한 소포트웨어적인 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터이다.

WAS는 Web Application Server의 약자로 웹 서버 + 웹 컨테이너 이다.

여기서 웹 컨테이너란 html로 작성된 파일이 아닌

다른 언어를 사용해서 만들어진 파일을 html 코드로 반환해주는 역할을 하는 것이다.

간단하게 말해서는 동적인 페이지를 구현하기 위해 웹서버에 웹 컨테이너를 추가한 것이라고 생각하면 된다.

 

WAS의 동작방식을 그림으로 설명해보자면

 

클라이언트에서 어떤 도메인을 검색한다.

그럼 우리의 컴퓨터에서는 DNS를 조회해 해당 도메인의 ip주소, 포트번호를 확인한다.

그리고 해당 ip주소와 포트번호로 HTTP 요청을 한다.

그럼 웹 서버에서 해당 HTTP 요청을 받는다.

만약 HTTP 요청을 받은 파일이 html 로만 구성된 파일이라면 웹서버에서 바로 해당 정보를 응답해줄 수 있다.

그렇다면 이것은 정적인 페이지가 될 것이다.

여기까지가 WEB 서버의 정의인 것이다.

하지만 위의 그림에서 요청한 파일은 php파일이다.

웹서버에서는 php파일을 해석할 수 없다.

그래서 해당 php파일의 해석을 위해 웹 컨테이너라는 추가적인 기능을 추가한 것이다.

이렇게 웹 서버에 웹 컨테이너를 추가한 것을 WAS라고 부르며

이는 정적인 페이지를 구현할 수 있다.

php 외에도 다른 개발 언어를 이용해

동적인 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것이 WAS의 역할인 것이다.

그렇다면 왜 WAS는 웹서버와 웹컨테이너를 분리해서 만들어진 것일까?

그 이유는 동적인 처리가 정적인 처리보다 처리 속도가 뒤쳐지기 때문이다.

정적인 처리만 필요한 경우에는 웹 서버에서만 처리되게끔 효율적인 분산 처리를 하는 것이다.

이는 서버의 부담도 덜어줄 수 있으며 빠르게 처리가 가능하다.

웹 서버와 WAS의 대표적인 종류를 확인해보자

 

가장 대표적인 웹 서버의 종류는 Apache이다.

HTTP 웹 서버를 의미하며 이는 즉, HTTP 요청을 처리하는 서버인 것이다.

가장 대표적인 WAS 종류는 Apache Tomcat이다.

주로 JAVA를 이용해서 웹을 구현할 때 많이 사용해본 경험이 있을 것이다.

즉, 간단히 다시 설명해보자면

웹 페이지 구현 시 html, css, js 외의 다른 언어를 이용한 데이터 처리가 이루어지는 경우

해당 처리는 웹 컨테이너에서 이루어지며 이를 WAS라고 한다.

그리고 이는 동적인 페이지 구현을 하기 위함이라고 생각하면 된다.

여기서 하나 더 짚고 넘어갈 부분이 있다.

그래서 정적인 페이지와 동적인 페이지의 차이는 무엇일까?

정적 웹페이지는 항상 같은 정보를 보여주는 페이지라고 생각하면 쉽다.

누가 어떻게 접속을 했던 간에 항상 같은 데이터에 같은 페이지가 보여진다고 생각하면 된다.

동적 웹 페이지는 요청에 따라 다른 정보를 보여주는 페이지를 의미한다.

클라이언트가 웹 페이지를 요청할 때, 서버에서 사용자에 맞는 데이터와 페이지를 보여주는 것이다.

홈페이지 내의 로그인을 생각하면 이해하기 더 수월할 것이다.