본문 바로가기

공부 정리

WS vs WAS

반응형

1. WS (Web Server)

Web Server는 클라이언트(일반적으로 웹 브라우저)로부터 HTTP 요청을 받아 정적 콘텐츠를 제공하는 서버입니다. 여기서 정적 콘텐츠란 이미지, HTML, CSS, JavaScript 파일과 같은 콘텐츠를 말합니다. Web Server의 주요 기능과 특징은 다음과 같습니다.

  • 역할: HTML, CSS, JavaScript, 이미지 파일 등 정적 리소스를 클라이언트에 전송.
  • 기능:
    • 클라이언트의 HTTP 요청을 수신하고, 요청에 맞는 정적 콘텐츠를 전송합니다.
    • 보안 인증, 캐싱, 압축 등의 기능을 제공하여 웹 애플리케이션의 성능을 최적화할 수 있습니다.
    • 동적 콘텐츠가 필요할 경우, WAS 등 다른 서버로 요청을 전달하고 결과를 클라이언트에 전달합니다.
  • 예시: Apache HTTP Server, NGINX, Microsoft IIS, LiteSpeed 등.

웹 서버는 정적 콘텐츠를 처리하고, 동적 콘텐츠가 필요한 요청은 WAS로 전달하는 경우가 많습니다.

 

2. WAS (Web Application Server)

Web Application Server는 동적 콘텐츠를 처리하고 비즈니스 로직을 수행하는 서버입니다. 일반적으로 DB 서버와 상호작용하며, 클라이언트가 요청한 정보에 따라 동적으로 데이터를 생성해 웹 서버에 전달합니다. 이를 통해 사용자에게 맞춤형 정보를 제공합니다.

  • 역할: 클라이언트 요청을 처리해 비즈니스 로직을 수행하고, 동적으로 콘텐츠를 생성하여 응답합니다.
  • 기능:
    • 사용자의 요청에 맞는 데이터 처리를 위해 DB와 상호작용합니다.
    • 복잡한 비즈니스 로직을 수행하고 결과를 생성하여 반환합니다.
    • HTTP 프로토콜 외에도 다양한 프로토콜을 사용하여 다른 시스템과 통신할 수 있습니다.
  • 예시: Apache Tomcat, IBM WebSphere, Oracle WebLogic, JBoss 등.

WAS는 서버에서 비즈니스 로직을 처리하고, 필요에 따라 DB와의 연동을 통해 동적인 웹 페이지를 생성합니다.

 

 

WS와 WAS의 협업

보통 WS는 클라이언트의 요청을 받고, 정적 콘텐츠를 처리하거나, WAS에 요청을 전달하는 역할을 합니다. 반면 WAS는 비즈니스 로직을 처리하여 동적인 콘텐츠를 생성하고 결과를 WS에 전달하는 역할을 수행합니다.

이 구조에서 Web Server는 프록시(Proxy) 역할을 하기도 하며, Web Application Server는 서버 내부에서 실제 애플리케이션 로직을 수행하는 서버입니다.


예시: 온라인 쇼핑몰 웹사이트

어떤 사용자가 웹 브라우저를 통해 온라인 쇼핑몰 웹사이트에 접속한다고 가정해봅시다. 이 사이트는 여러 페이지로 구성되어 있으며, 사용자에게 제품 목록을 보여주고, 각 제품 페이지에서 상세 정보와 리뷰 등을 제공합니다.

이 경우 **웹 서버(WS)**와 **웹 애플리케이션 서버(WAS)**가 어떻게 협력하여 사용자의 요청을 처리하는지 설명해보겠습니다.

 

 

1. 웹 서버 (WS)의 역할

  1. 사용자가 쇼핑몰 웹사이트의 URL을 입력하여 메인 페이지에 접속하려고 합니다.
  2. 사용자의 브라우저가 **웹 서버(WS)**에 HTTP 요청을 보냅니다. 예를 들어, 쇼핑몰의 메인 페이지 HTML 파일, CSS 스타일, JavaScript 파일, 이미지 등을 요청합니다.
  3. 웹 서버는 HTML, CSS, JavaScript, 이미지 파일 등과 같은 정적인 콘텐츠를 클라이언트(브라우저)에게 전달합니다.
    • 이 경우 웹 서버는 요청된 파일을 빠르게 제공하고 끝납니다. 사용자는 메인 페이지의 로고, 버튼, 네비게이션 메뉴 등의 디자인 요소가 로딩되는 것을 보게 됩니다.

 

2. 웹 애플리케이션 서버 (WAS)의 역할

이제 사용자가 특정 카테고리의 제품 목록을 클릭하여 그 페이지로 이동한다고 해봅시다. 이 요청에는 데이터베이스에서 제품 정보를 가져오는 작업이 필요하므로, WAS가 등장하게 됩니다.

  1. 사용자가 "전자제품" 카테고리를 클릭하여 제품 목록 페이지를 열려고 합니다.
  2. 브라우저는 이 요청을 웹 서버에 다시 전달합니다.
  3. 웹 서버는 이 요청을 보고 정적 콘텐츠가 아닌 동적인 데이터가 필요하다고 판단하여 웹 애플리케이션 서버(WAS)로 요청을 전달합니다.
  4. WAS는 제품 정보를 DB에서 가져오도록 비즈니스 로직을 수행합니다. 즉:
    • "전자제품" 카테고리의 모든 제품 리스트를 조회하는 SQL 쿼리를 DB에 요청하고, DB는 해당 데이터를 WAS에 반환합니다.
    • WAS는 이 데이터를 바탕으로 HTML 코드나 JSON 등의 형태로 응답을 생성하여 웹 서버에 다시 전달합니다.
  5. 웹 서버는 최종적으로 이 동적 콘텐츠를 사용자 브라우저에 보내고, 브라우저는 "전자제품" 목록을 동적으로 생성하여 사용자에게 보여줍니다.

 


 

좀 더 구체적인 처리 흐름

메인 페이지 접속:

  • 사용자 요청웹 서버(WS)정적 콘텐츠 반환(HTML, CSS, JS 등)브라우저에 표시
    • 여기서는 WAS가 관여하지 않고, 웹 서버가 HTML 등의 정적 파일을 바로 제공하는 단계입니다.

제품 목록 요청:

  • 사용자 요청웹 서버(WS)웹 애플리케이션 서버(WAS)DB에서 데이터 조회동적 콘텐츠 생성웹 서버로 반환브라우저에 표시
    • 이 과정에서는 WAS가 비즈니스 로직을 수행하고, DB에서 데이터를 가져와서 동적인 HTML을 생성하여 웹 서버에 전달합니다.

 


WS와 WAS의 구분이 중요한 이유

  • **웹 서버(WS)**는 이미지, CSS, JavaScript 같은 고정된 파일을 빠르게 전송하고, 서버 부하를 줄이는 데 집중합니다.
  • **웹 애플리케이션 서버(WAS)**는 사용자 맞춤형 데이터를 제공하거나 복잡한 비즈니스 로직을 처리합니다. 예를 들어, 제품 목록을 보여주거나 결제 관련 정보를 처리하는 작업은 WAS에서 수행됩니다.

 

정리

  • 웹 서버는 주로 정적인 리소스를 제공합니다.
  • 웹 애플리케이션 서버는 데이터베이스와 상호작용하여 맞춤형 데이터나 복잡한 로직 처리를 수행합니다.

두 서버가 분리되어 있기 때문에, 요청이 많아질 경우 웹 서버는 여러 대를 두어 웹 트래픽을 분산하고, WAS는 로직 처리를 집중적으로 수행하여 서버의 효율을 높이는 구조를 가질 수 있습니다.

반응형