[네트워크] 웹 서버(Web Server)와 WAS(Web Application Server)

2024. 1. 6. 11:08CS/네트워크

 

클라이언트(Client) 서버(Server)

 

  웹 개발 혹은 IT 분야에서 활동을 하다 보면은 클라이언트와 서버라는 단어를 한 번쯤은 듣게 된다. 간단하게 설명하자면 클라이언트는 '서비스 요청자'를, 서버는 '서비스 제공자'를 의미하며 클라이언트가 서버에 서비스를 요청하면 서버는 그에 맞는 서비스를 제공해 주는 관계로 이어져있다.

 

  • 클라이언트 : 서버의 서비스를 제공받아 사용하는 사용자 혹은 장치, 프로그램
  • 서버 : 클라이언트의 요청에 대한 응답을 서비스로 제공하는 시스템

 

웹 서버(Web Server)

 

  웹 서버는 클라이언트가 웹 브라우저를 통해 웹 리소스를 요청하게 되면 이에 맞는 정적인 컨텐츠를 제공한다. 정적인 컨텐츠란 HTML, CSS, 이미지, 파일 같이 어떠한 가공처리 없이 바로바로 제공 가능한 컨텐츠를 의미한다.

 

  예를 들어서 클라이언트가 구구단에 대한 정보를 요청한다 하자 웹 서버는 정적인 컨텐츠에 한해서만 제공이 가능하므로 웹 서버에는 구구단에 대한 모든 계산 결과에 대한 정보가 미리 저장되어있어야 한다.(2x1=2, 2x2=4..등) 그러나 극단적으로 생각하면 1단, 2단에 대한 정보가 아닌 1000단 이상에 대한 정보만 요청하더라도 곤란한 상황을 초래한다.

 

  프로그래밍을 해본 사람이라면 구구단은 반복문을 사용하는 간단한 코드만으로 원하는 단의 결과를 얻을 수 있다는 사실을 알고 있다. 이렇듯 정적인 컨텐츠로는 제공하기 힘든 정보는 동적인 컨텐츠로 간단하게 제공할 수 있다. 그리고 이러한 동적인 컨텐츠에 해당하는 비즈니스 로직 처리DB 연동을 통한 조회 작업을 수행하기 위해 등장하게 된 것이 WAS이다.

 

WAS(Web Application Server)

 

  WAS는 Web Application + Server로 웹에서 응용 프로그램을 실행하여 필요한 기능을 수행하고 그 결과를 웹 서버에 전달하는 일종의 미들웨어의 역할을 수행한다. 또한 웹 서버의 기능 대부분을 사용 가능하기 때문에 웹 서버의 역할도 수행 가능하다. WAS의 가장 큰 역할은 클라이언트의 요청에 따라 변하는 정보인 동적인 컨텐츠를 제공 가능하다는 것이다.

 

  앞서 WAS는 웹 서버의 역할도 수행 가능하다고 하였다. 그렇다면 웹 서버 없이 WAS만으로 서버를 운영하면 되는 것 아닌가?라고 생각할 수 있다. 그러나 WAS만으로 서버를 운영하게 되면 정적 처리와 동적 처리를 모두 부담해야 하는 상황에 놓이게 되어 서버에 부담이 가중된다. 결국 서버의 성능 저하를 초래하게 된다. 따라서 웹 서버와 WAS 모두 사용하여 정적 처리와 동적 처리 기능을 분할 담당함으로써 서버의 과부하를 방지하고 서버의 데이터도 나눠 보관함으로서 보안성도 얻을 수 있는 효과를 누릴 수 있다.

 

웹 서버(Web Server) 구조 및 흐름

 

웹 서버 구조 및 흐름

 

  웹 서버는 클라이언트 - Web Server - Web Container - Database 구조로 이루어져 있으며 요청, 응답의 흐름은 다음과 같다.

 

  1. 클라이언트의 컨텐츠 요청
  2. 정적인 컨텐츠일 경우 Web Server에서 처리하여 클라이언트에게 응답 결과 제공
  3. 동적인 컨텐츠일 경우 Web Server는 전달받은 요청을 Web Container로 전달
  4. DB 데이터 조회가 필요한 경우 DB에 데이터 요청
  5. DB는 요청받은 데이터 조회에 대한 응답을 Web Container로 전달
  6. Web Container는 전달받은 DB 데이터를 동적인 컨텐츠로 가공 처리
  7. 가공 처리된 동적인 컨텐츠를 Web Server로 전달
  8. 전달받은 동적인 컨텐츠를 최종적으로 클라이언트에게 전달