본문 바로가기

CS

[CS] Web Server와 WAS, 각각의 역할 이해하기

 

 

 


 

 

Web Server

정의 :

클라이언트(주로 웹 브라우저)의 요청을 받아서, 그에 대한 응답(HTML, CSS, 이밎, JSON 등)을 보내주는 소프트웨어 혹은 하드웨어 시스템을 말합니다.

 

 

웹 서버 주요 역할

1. HTTP 요청 처리 :

  • 클라이언트가 보낸 HTTP 요청(GET, POST 등)을 수신합니다.

2. 콘텐츠 제공 :

  • 요청된 정적 파일(html, css, js, 이미지 등)을 제공하거나, 동적 콘텐츠를 애플리케이션 서버에 위임하여 응답을 전달합니다.

3. 응답 전송 :

  • 요청 처리 후 결과(HTML 페이지, JSON, 에러 메시지 등)를 HTTP 응답으로 클라이언트에 전송합니다.

 

 

웹서버의 종류

  • 정적 웹 서버 (Static Web Server)
    • 요청에 따라 정적인 파일만 제공
    • 예: 이미지, HTML 파일 그대로 전달
    • 예시: Nginx, Apache
  • 동적 웹 서버 (Dynamic Web Server)
    • 서버 내부에서 코드를 실행하고 결과를 생성해 응답
    • 예: PHP, Node.js, Python 등의 백엔드 코드 실행
    • 예시: Apache + PHP, Nginx + FastCGI, Node.js

 

 

 

대표적인 Web Server

1. NGINX

2. Apache

3. Node.js

 

 


 

 

 

WAS(Web Application Server)

정의 :

HTTP 기반으로 동작하며 웹 서버의 기능을 포함합니다. 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠(예: 로그인, 댓글, 게시판 등)를 생성 후 응답하는 소프트웨어입니다.

동적 웹 서버와 겹치는 부분이 있지만, 같은 개념 ❌

  • 동적 웹은 비교적 단순한 동적 페이지를 처리 (Web Server + 일부 애플리케이션 기능 수행)
  • WAS는 세션 관리, 보안, 트랜잭션 등 복잡한 로직을 수행 (복잡한 애플리케이션 로직을 중심으로 설계)

 

 

WAS 주요 역할 : 

1. 클라이언트 요청 수신

  • 사용자가 웹사이트에서 버튼 클릭, 로그인 요청 등을 전송

2. 비지니스 로직 처리

  • 예 : 로그인 요청 → 데이터베이스에서 사용자 정보 확인

3. 데이터베이스 연결

  • 필요한 데이터를 불러오거나 저장함

4. 동적인 HTML 응답 생성

  • JSP/Servlet, Spring 같은 기술을 이용하여 HTML 페이지를 동적으로 생성

5. 응답 반환

  • 생성된 결과를 클라이언트(브라우저)에 전송

 

 

대표적인 WAS 예시 :

1. Tomcat - Spring Boot에 내장되어 있습니다.

2. Jetty

3. Undertow

 

 

 


 

 

 

Web Server와 WAS(Web Application Server)의 차이점

  1. 실제로는 Web Server도 Application 로직을 포함할 수 있습니다.
  2. WAS는 Application 코드를 실행하는 것에 더욱 특화되어 있습니다.
  3. Java에서는 Servlet Container 기능을 제공하면 WAS입니다.

 

 


 

 

 

실제 Web System 구성

정적 리소스와 Application 로직을 분리하여 처리합니다.

1. 정적 리소스는 Web Server에서 처리합니다.

2. Web Server는 Application 로직이 필요한 요청만을 WAS에 전달합니다.

 

 

장점 :

  1. 효율적으로 리소스를 관리할 수 있습니다.
    • 정적 자원이 많이 사용된다면 Web Server를 Scale Out 합니다.
    • Application 관련 자원이 많이 사용된다면 WAS를 Scale Out 합니다.
  2. Web Server를 통해 오류 화면을 제공할 수 있습니다.
    • Web Server는 오류가 발생할 확률이 아주 낮습니다.
    • WAS는 오류가 발생할 확률이 아주 높고, 장애가 자주 발생합다.
    • WAS는 DB와 상호작용하기 때문에 DB에 문제가 생겨도 문제가 발생합니다.