본문 바로가기

네트워크

[네트워크] WAS란?

 

WASWeb Application Server의 약자이다. 

WAS에 대해 알기위해서는 우선 웹서버에 대해서 알아야한다고 생각한다.

웹서버를 우리에 일상에 대입하여 생각해본다면 우리가 현재 진입하고자 하는 웹사이트에 대한 소스코드(HTML, CSS, JS)를 가지고 있는 컴퓨터를 의미한다. 이전 단계에서 언급한 TCP와 같은 통신 방식을 통해 우리는 웹 서버로부터 웹페이지를 공급받고 브라우저는 이를 랜더링하여 우리에게 보여준다. 

 

하지만, 우리가 현재 사용하고 있는 티스토리만 봐도 한번 페이지를 랜더링하면 끝이 아니라 다른 사용자 혹은 본인에 의해 지속적으로 업데이트되고 변경되는 내용들이 발생한다. 이로 인해 현대의 웹사이트는 단순히 정보와 문서를 제공한다는 의의를 넘어서 사용자와의 상호작용을 베이스로 하는 서비스와 같은 형태를 띄게 되었다. 이것이 웹 어플리케이션의 의미이다.

 

WAS와 웹 서버의 차이점

가끔 이 둘의 차이점에 대해 물어보는 질문이 면접같은데서도 오갈 수 있는 것 같기에 알아보려 한다.

결론부터 말하자면 WAS는 백엔드 개발자분이 개발한 API를 배포하고 돌리는 서버 소프트웨어라고 필자는 이해했다.

즉, 우리가 이렇게 일상적으로 사용하는 블로그와 같이 사용자의 상호작용이 다수 발생하는 '동적'인 웹사이트들 사이에서 발생하는 요청과 응답을 처리하는 서버인 것이다.

 

웹 서버(Web Server)

 

웹 서버는 주로 '정적' 콘텐츠를 처리하는 데 사용된다. 정적 콘텐츠란 HTML, CSS, JavaScript, 이미지 파일과 같이 서버에 미리 저장되어 있고 사용자 요청에 따라 변하지 않고 그대로 제공되는 파일들을 말한다. 웹 서버의 주 역할은 이러한 파일을 인터넷을 통해 사용자의 웹 브라우저로 전송하는 것이다.

 

예시:

  • Apache HTTP Server
  • Nginx
  • Microsoft IIS

 

웹 어플리케이션 서버(WAS)

 

WAS는 웹 서버의 기능을 포함하면서, 복잡한 '동적' 콘텐츠를 생성하고 처리할 수 있는 서버라고 한다. 사용자의 요청에 따라 실시간으로 페이지를 생성하거나 데이터베이스 조회, 세션 관리, 트랜잭션 관리와 같은 복잡한 백엔드 로직을 처리한다.

 

예를 들어, 백엔드 개발자분들이 많이 사용하는 Java Spring같은 프레임워크를 통해 개발된 API가 이 WAS에 배포되며, WAS 위에서 실행되는 것이다.

 

예시:

  • Apache Tomcat
  • Oracle WebLogic
  • IBM WebSphere
  • Microsoft ASP.NET

 

WAS는 기본적인 웹 서버의 기능도 포함하고 있어, 정적인 콘텐츠도 제공할 수 있다.

그러나 WAS는 주로 동적인 콘텐츠의 처리에 특화되어 있기 때문에, 더 많은 시스템 자원을 소모할 수 있다.

종합하자면, WAS는 웹 서버의 기능을 포함하면서도 추가적인 기능을 제공하는 더 확장된 형태의 서버라고 볼 수 있다. 

현실에서는 효율성을 위해 웹 서버와 WAS를 조합하여 사용하기도 한다고 한다.