웹 서버 & 웹 어플리케이션 서버

·2023년 4월 26일
0

study

목록 보기
65/81
post-thumbnail

웹 서버 (Web Server)와 웹 어플리케이션 서버 (Web Application Server)의 차이점은 무엇인가요?

웹 서버(Web Server)

웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠와 기타 부가기능을 제공하는 서버이다.

정적 컨텐츠 : 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠

간단히 말하자면,
웹 서버는 클라이언트(사용자)가 브라우저 주소창에 url을 입력하여 어떤 페이지를 요청하면, http 요청을 받아 즐여 HTML문서와 같은 정적 컨텐츠를 사용자에게 전달해주는 역할을 한다.

  • 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 한다.

  • 웹 서버에는 Apache, NginX, IIS(windows 전용 웹 서버)등이 있다.

웹 어플리케이션 서버(Web Application Server, WAS)


WAS란 비즈니스 로직을 처리할 수 있어 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다.

  • 웹 서버가 할 수 있는 기능 대부분이 WAS에서도 처리가 가능합니다.

  • 프로그램 코드를 실행해서 애플리케이션 로직 수행합니다.

  • 동적 HTML, HTTP API(JSON)를 사용합니다.

  • HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행된다.

  • WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리 가능하다.

  • WAS는 JSP, Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너로 불린다.

  • WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.

  • WAS에는 Tomcat, JBoss, WebSphere, Jeus 등이 있다.

WAS 구조

WAS는 Web Server와 Web Container의 역할을 모두 할 수 있다. 여기서 컨테이너는 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. 현재 WAS의 웹 서버도 정적인 컨텐츠를 처리하는 데 성능상 큰 차이가 없다.

그렇지만 WAS가 웹 서버의 기능까지 모두 수행하는 것은 다음과 같은 이유로 옳지 않아 분리하는게 좋다.

1. 서버 부하 방지
WAS와 웹 서버는 분리하여 서버의 부하를 방지해야 한다. WAS는 DB 조회나 다양한 로직을 처리하고, 단순한 정적 컨텐츠는 웹 서버에서 처리해줘야 한다. 만약 정적 컨텐츠까지 WAS가 처리한다면 부하가 커지게 되고, 수행 속도가 느려질 것이다.

2. 보안 강화
SSL에 대한 암호화, 복호화 처리에 웹 서버를 사용 가능

3. 여러 대의 WAS 연결 가능
로드 밸런싱을 위해 웹 서버를 사용할 수 있다. 여러 개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.

4. 여러 웹 어플리케이션 서비스 가능
하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용할 수 있다.

이러한 이유로 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능하다.

차이점

기능적으로 동일한 영역도 있지만 사용의 목적이 다른데

웹 서버는 정적인 데이터를 처리하며 WAS는 정적인 데이터도 처리는 가능하지만 동적인 데이터를 위주로 처리하는 서버이다.
DB와 연결하여 사용자와 데이터를 주고받고, 조작이 필요한 경우 WAS를 활용한다.

참고
웹 서버와 WAS-1
웹 서버와 WAS-2

profile
개발자 꿈나무

0개의 댓글