2 분 소요

웹 서버(Web Server) WAS(Web Application Server)

웹 서버와 WAS는 웹 상에서 서비스를 제공하기 위해 사용되는 서버이다.
각각의 목적과 역할을 살펴보자.

1. 웹 서버 (Web Server)

웹 서버는 클라이언트(브라우저)로부터 HTTP 요청을 받아, 정적 콘텐츠를 제공하는 역할을 한다.
또한, 동적 콘텐츠 요청이 들어오면 WAS로 전달하는 역할도 수행한다.

🔹 개념

  • 웹 서버(하드웨어): 웹 서버 소프트웨어가 설치된 컴퓨터
  • 웹 서버(소프트웨어): 클라이언트의 HTTP 요청을 받아 정적 콘텐츠를 제공하는 프로그램

🔹 주요 기능

  • 정적 콘텐츠 제공: HTML, CSS, JavaScript, 이미지 등을 직접 제공
  • 동적 요청 처리: 동적 요청을 WAS로 전달하여 결과를 받아 클라이언트에 반환

🔹 정적 vs 동적 콘텐츠

| 구분 | 정적 콘텐츠 | 동적 콘텐츠 | |——|———–|———–| | 특징 | 변하지 않는 데이터 | 사용자에 따라 변하는 데이터 | | 예시 | HTML, CSS, 이미지 | 마이페이지, 장바구니, DB 연동 데이터 |

🔹 주요 웹 서버 소프트웨어

  • Apache HTTP Server
  • Nginx
  • IIS (Microsoft Internet Information Services)

2. WAS (Web Application Server)

WAS는 동적 웹 페이지를 생성하고, 비즈니스 로직을 수행하는 서버이다.
웹 서버가 전달한 요청을 처리하여 최종 결과(HTML, JSON 등)를 클라이언트에 반환한다.

🔹 주요 기능

  • 비즈니스 로직 실행: 사용자 요청에 따라 로그인, 결제, 게시글 작성 등의 작업 수행
  • DB 연동 및 트랜잭션 관리: 데이터베이스와 연결하여 데이터를 조회·수정
  • 세션 및 인증 관리: 로그인 상태 유지, 사용자 권한 체크
  • 부하 분산 및 멀티스레딩 처리: 멀티스레딩을 통해 여러 요청을 동시에 처리하며, 부하 분산은 별도의 로드 밸런서와 함께 활용

🔹 주요 WAS 소프트웨어

  • Tomcat (Apache Tomcat, Servlet Container)
  • JBoss (WildFly)
  • WebLogic
  • WebSphere

3. 웹 서버 vs WAS 비교

구분 웹 서버 (Web Server) WAS (Web Application Server)
역할 정적 콘텐츠 제공, 동적 요청을 WAS에 전달 동적 콘텐츠 생성, 비즈니스 로직 처리
처리 내용 HTML, CSS, JS, 이미지 등 제공 DB 연동, 세션 관리, 트랜잭션 처리
주요 소프트웨어 Apache, Nginx, IIS Tomcat, JBoss, WebLogic

웹 서버는 정적 콘텐츠를 빠르게 제공하며, WAS는 비즈니스 로직과 데이터베이스 연동을 처리하는 역할을 한다.
대규모 웹 서비스에서는 웹 서버와 WAS를 분리하여 사용함으로써 성능을 최적화하고, 서버 부하를 효과적으로 관리할 수 있다.


4. Web 서버와 WAS의 차이?

앞서 설명했듯 Web 서버는 정적 리소르를 제공, WAS는 애플리케이션 로직까지 실행할 수 있다고 볼 수 있다. 하지만 Web 서버도 프로그램을 실행하는 기능을 포함하고, WAS도 웹 서버의 기능을 제공하기에 둘의 차이가 애매하다고 느낄 수 있다.

확실하게 차이가 나는 것은 서블릿 컨테이너 유무라고 할 수 있고, WAS가 애플리케이션 코드 실행에 더 특화되어 있다고 할 수 있다.


웹 서비스의 구조

WAS는 Web 서버의 기능을 포함했기에 WAS와 DB만으로 웹 서비스 시스템을 구현할 수 있다. 하지만 왜 WAS만으로 웹 서비스를 구성하지 않을까?

그 이유는 WAS가 너무 많은 역할을 담당하면 서버 과부화 위험이 있을 수 있고, 제일 비싼 애플리케이션 로직이 정적 리소스 때문에 수행하기 어려워질 수 있기 때문이다.

또한, WAS에 장애가 발생한 경우 리소스를 전달할 수 없기에 오류 화면도 노출할 수 없다는 단점이 있다.

WAS로만 웹 서비스 설계시 위와 같은 문제점이 있어 다음과 같이 웹 서비스 구조를 변경하게 된다.


Web - WAS 분리

Web 서버는 정적인 리소스(HTML, CSS, JS, 이미지)를 처리하고, 동적인 처리가 필요한 애플리케이션 로직을 WAS에 요청한다.

WAS는 중요한 애플리케이션 로직을 전담하여 처리한다.

이처럼 분리할 경우 장점

  • WAS에 장애가 발생한들, Web 서버가 오류화면 리소스를 제공할 수 있다. (정적 리소스만 제공하는 Web서버는 잘 죽지 않는다)
  • 효율적인 리소스 관리가 가능하다. (ex. 정적 리소스가 많이 사용되면 Web 서버만 증설)

카테고리:

업데이트: