WEB서버 / WAS 분리 이유

change·2020년 10월 18일
0
post-thumbnail

이 포스트에서는 WEB서버와 WAS를 분리하는 이유에 대해서 알아보려 한다.

WEB서버 란?

출처 : MDN Web Docs

클라이언트가 요청하는 __HTML 문서__나 __각종 리소스__를 전달하는 소프트웨어 이다.
위에서 말한 소프트웨어 외에도 해당 소프트웨어를 실행시키는 하드웨어 또한 WEB서버라고 말한다.
그러나 이 포스트에서는 아파치 HTTP 서버, NGINX, WebtoB 와 같은 소프트웨어 에 해당하는 WEB서버에 대해서 말하도록 하겠다.


WAS 란?

__W__eb __A__pplication __S__erver 의 약자이다.
동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버로써 웹 프로그램을 실행할 수 있는 환경을 제공한다.
대표적인 WAS로는 Tomcat, Jeus, WebLogic, WebSphere 등이 있다.


WEB서버와 WAS의 차이

WEB서버는 __정적인 컨텐츠를 제공하는 서버__이고 WAS는 __동적인 컨텐츠를 제공하는 서버__이다.

예전의 WAS에서는 정적인 웹서버 기능을 제공하지 않았지만 오랜 기간 WAS가 발전을 거듭하여 최근 WAS들은 동적인 컨텐츠 뿐만 아니라 정적인 컨텐츠도 제공해주고 있다.

그렇기 때문에, WEB서버 없이 WAS만 존재하는 것도 가능하다.


그런데도 왜 WEB서버와 WAS를 분리하는 걸까?

위에서 말했듯이 WAS만 있어도 서비스를 제공하는 데에는 문제가 없다.
그러나 주로 서버 구성 시에 WEB서버WAS를 분리하여 구성한다.

그 이유는 여러 가지가 있는데 그 중 몇 가지를 알아보자.

1. 기능을 분리하여 서버 부하를 방지한다.

WAS가 혼자서 모든 요청을 처리할 수 있다고는 하지만 그만큼 WAS가 감당하는 부담이 커지게 된다.
그렇기 때문에 기능을 분리해서 각 서버가 감당하는 부하를 줄일 수 있도록 WEB서버WAS를 분리한다.

2. 물리적으로 분리하여 보안을 강화한다.

WAS에는 실제 Web Application이 올라가 있기 때문에 외부와 직접 연결이 되어 있다면 중요한 설정 파일이나 리소스들이 외부로 노출될 수 있다.
이를 막기 위해서 WEB서버WAS 앞단에 배치해서 리소스를 안전하게 보호할 수 있다.

3. WEB서버에 여러 대의 WAS를 연결할 수 있다.

규모가 큰 서비스에서는 하나의 WEB서버에 하나의 WAS가 연결된 구조만으로는 많은 요청을 처리하는 데에 어려움이 생긴다.
그렇기 때문에 수많은 요청을 한군데가 아닌 여러 군데에서 처리를 할 수 있도록 동일한 Web Application 여러 개를 띄운다.
이때 여러 대의 WAS에 각각 요청을 들어오도록 하지 않고 앞에 WEB서버를 두고 각 WAS들을 WEB서버에 연결해서 WEB서버로 들어오는 수많은 요청을 각 WAS들에 적절하게 분배해주도록 한다.

이렇게 배치하여 로드밸런싱을 해줌으로써 하나의 WAS가 처리하는 요청의 양이 줄어들어 안정적인 서비스 운영이 가능하다.

4. 여러 Web Application을 서비스할 수 있다.

Java 서버, PHP 서버와 같이 서로 다른 서버를 하나의 WEB서버에 연결해서 서비스 할 수 있다.


위처럼 다양한 이유가 있지만, 최근엔 WAS의 기능이 많이 강화되었기 때문에 WEB서버와 WAS를 분리하는 가장 큰 이유는 로드밸런싱이라고 볼 수 있다.

마치며...

오늘 알아본 WEB서버와 WAS를 분리하는 이유는 블로그 포스팅을 시작한 초반부터 한번 정리하려고 했던 주제였다.
다른 주제들을 정리하다 보니 계속해서 미뤄졌는데 지금이라도 포스팅하게 돼서 마음이 편해졌다.
내용 중에서 각각 세부적인 주제에 대해서도 좀 더 설명을 해야 할 것 같은데 새로운 포스팅 주제로 잡고 작성해보도록 해야겠다.

0개의 댓글