Home WS(웹 서버)와 WAS(웹 어플리케이션 서버)
Post
Cancel

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

웹 서버와 웹 어플리케이션 서버는 db 서버와 함께 3-tier 아키텍처를 구성하는 서버들이다. CS 기초 지식으로도 많이 언급되는 개념인 두 서버의 각각의 특징과 필요성을 알아보고 두 서버간 차이점을 정리해보고자 한다.

웹 서버는 웹 페이지들의 모음인 웹 사이트를 제공하는 서버로 서버 프로그램, 소프트웨어이다. 대표적인 예로는 아파치, Nginx 그리고 Microsoft 사의 IIS가 있으며 IIS는 윈도우 서버로 점유율은 아파치가 가장 높다. 클라이언트가 서버로 http 요청을 보내면 그 요청을 웹 서버가 받고 정적 데이터베이스(static database)에 접근하여 요청에 맞는 정적 콘텐츠(static contents)를 찾아 그 내용을 http에 담아 응답한다. 정적 콘텐츠란 저장된 형태 그대로 제공되는 콘텐츠로 html, css, 동영상과 이미지 파일 등이 해당된다. 온보딩 페이지나 독자와의 상호작용 없이 단순히 퍼블리싱을 목적으로 하는 블로그의 경우 정적 콘텐츠 제공만으로도 운영이 가능하다. 이처럼 클라이언트의 요청을 받고 그에 맞는 적절한 정적콘텐츠를 제공하는 것이 웹 서버의 기본적인 역할 중 하나이다.

하지만 정적 콘텐츠 제공만으로 모든 요청을 완수할 수 있는 것은 아니다. 디렉토리에 저장된 파일을 있는 그대로 제공해서 끝내서는 안 되고 각 요청에 맞는, 부가적인 처리를 해야 할 필요가 있는 경우가 많다. 사용자에 따라 달라지는 화면 하나만 해도 로그인한 유저에 맞게 그 내용을 채워 반환해주어야 한다. 요청에 맞는 애플리케이션을 실행해 이를 해결하는 서버가 바로 웹 어플리케이션 서버이다.

톰캣이 대표적인 예시로 애플리케이션 서버, WAS, 와스라고 불리는 웹 어플리케이션 서버는 웹 서버가 받았던 http 요청을 웹 서버로부터 전달받고 그에 맞는 애플리케이션을 실행한 뒤 웹 서버에게 응답한다. WAS로 요청을 전달해주고 응답을 받는 것이 바로 웹 서버의 또 다른 역할이며(리버스 프록시, reverse proxy) 자주 요청하는 자원에 대해서는 캐싱(caching)을 한다. WAS는 필요에 따라 데이터베이스, 다른 서버 혹은 외부 시스템과 통신해 필요한 데이터를 얻고 이를 적절하게 가공하여 가공한 데이터를 반환하거나 웹 페이지에 가공한 데이터를 채워 넣어 웹 페이지 내용을 반환한다. 이 둘은 CSR, SSR 차이에서 오며 요청에 맞는 적절한 애플리케이션을 수행해 적절한 데이터 가공을 거친다는 점에서는 동일하다. 이런 과정을 거쳐 제공되는 컨텐츠를 동적 컨텐츠(dynamic contents)라고 하며 웹 서버와 와스를 간단하게 구분짓는 지점이 바로 이들이 다루는 컨텐츠의 종류의 차이임을 알 수 있다. 일반적으로 정적 콘텐츠는 웹 서버가, 동적 컨텐츠는 와스가 다룬다.

일반적으로라고 정리한 이유는, 웹 어플리케이션 서버도 정적 콘텐츠를 다룰 수 있기 때문이다. 하지만 대개 이 둘을 분리하여 정적 콘텐츠 처리는 웹 서버에게 맡긴다. 정적콘텐츠 반환과 클라이언트와의 통신 역할을 웹 서버에 맡김으로서 웹 어플리케이션 서버는 클라이언트 관점에서 가려져 보안적인 측면에서도 이점이 있기 때문이다. 또한 요청이 많을 때 웹 서버가 로드밸런싱을 통해 여러 대의 웹 어플리케이션 서버에 요청을 분산 전달함으로서 요청 처리 성능을 높일 수 있으며 한 와스가 업데이트를 위해 중단되더라도 그 사이에 다른 와스로 요청을 보내 사용자 입장에서는 중단 없이 서비스를 이용할 수 있다.

이를 바탕으로 웹 서버와 와스의 차이를 간단하게 정리하면, 웹 서버는 클라이언트의 http, https 요청을 받아 정적 컨텐츠를 반환하고 로드밸런싱, 캐싱 역할을 수행해 클라이언트에게 응답하는 역할을 한다. 추가로 https 관련 보안 기능도 맡아 수행한다. 웹 어플리케이션 서버는 웹 서버가 전달해주는 요청을 받아 데이터베이스 서버나 외부 서버, 시스템과 다양한 프로토콜을 통해 통신해 응답에 필요한 데이터를 얻고 이를 가공하여 웹 서버에게 그 결과를 반환한다고 이해할 수 있다.

웹 서버, Web server (정보통신용어사전)
https://terms.tta.or.kr/dictionary/dictionaryView.do?subject=%EC%9B%B9+%EC%84%9C%EB%B2%84

웹 애플리케이션 서버, Web Application Server, WAS (정보통신용어사전)
https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=060004-3

애플리케이션 서버란 무엇인가요? (IBM)
https://www.ibm.com/kr-ko/think/topics/application-server

웹 서버와 애플리케이션 서버의 차이점은 무엇인가요? (IBM)
https://www.ibm.com/kr-ko/think/topics/web-server-application-server

Three-Tier Client Server Architecture in Distributed System (Geeks for Geeks)
https://www.geeksforgeeks.org/computer-networks/three-tier-client-server-architecture-in-distributed-system/

This post is licensed under CC BY 4.0 by the author.

REST API 설계 시 고려 사항

테이블 스키마 설계 시 고려 사항