WAS 이해하기

** 기존에 제가 정리한 내용을 ChatGPT가 블로그 SEO 에 맞게 가공해준 게시글입니다.

Web Application Server (WAS)란?

WAS는 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)입니다. 주로 DB 조회나 다양한 로직 처리를 요구하는 동적인 콘텐츠를 제공하기 위해 만들어진 AS(Application Server)입니다. 다음과 같은 이름으로도 불립니다:

  • Web Container
  • Servlet Container

주요 용어

  • Container: JSP와 Servlet을 실행할 수 있는 소프트웨어
  • Servlet: 자바로 작성된 웹 기술로, 클라이언트의 요청을 처리하고 결과를 전송하는 역할

한국에서는 주로 WAS, WAS/SW, 웹 응용 서버로 불리며, 영미권에서는 **AS (Application Server)**라는 용어를 사용합니다.

대부분의 WAS는 자바 기반이며, 표준 자바 EE를 따르지 않는 제품도 존재합니다. 대표적인 상용 WAS와 오픈소스 WAS는 다음과 같습니다:

  • 상용 WAS: OAS, WebLogic(Oracle), JBoss(RedHat), Jeus, WebSphere(IBM)
  • 오픈소스 WAS: Apache Tomcat

WAS의 기본 기능

WAS는 다음과 같은 기본 기능을 제공합니다:

  1. 프로그램 실행 환경과 데이터베이스 접속 기능 제공
  2. 여러 개의 트랜잭션 관리
  3. 업무를 처리하는 비즈니스 로직 수행

또한, 어플리케이션과 웹 서버를 연결하는 역할도 수행하며, 보통 WAS는 웹 서버 기능도 포함하고 있습니다. 하지만 모든 WAS가 웹 서버 기능을 포함하는 것은 아니므로, 사용 환경에 따라 웹 서버와의 조합이 필요할 수 있습니다.

웹 서버와 WAS의 차이

웹 서버(Web Server)

웹 서버는 클라이언트의 요청에 응답하며, 정적 콘텐츠(HTML, CSS, PNG 등)를 제공하는 역할을 합니다. 요청이 들어오면 가장 먼저 처리하며, 다음과 같은 구조로 동작합니다:

  1. 정적 콘텐츠 요청: 웹 서버가 직접 응답
  2. 동적 콘텐츠 요청: WAS에게 처리 요청 후 결과를 클라이언트에 응답

웹 서버의 하드웨어와 소프트웨어 측면에서의 정의는 다음과 같습니다:

  • 하드웨어: 정적 파일(html, 이미지 등)을 저장하고 인터넷과 연결된 기기들이 데이터를 주고받도록 돕는 컴퓨터
  • 소프트웨어: HTTP 요청을 관리하며, URL(Web 주소)과 연결된 HTTP 서버 소프트웨어의 일부

WAS(Web Application Server)

WAS는 다음과 같은 이유로 필요합니다:

  1. 동적 콘텐츠 제공: 사용자의 요청에 따라 적절한 데이터를 DB에서 조회하고 비즈니스 로직에 맞게 처리해 결과 제공
  2. 효율적인 자원 사용: 웹 서버만 사용한다면 결과값을 미리 만들어두어야 하는 비효율 발생
  3. 기능 분리: 정적 콘텐츠는 웹 서버가 빠르게 제공하고, 동적 처리는 WAS가 담당하여 서버 부하 방지
  4. 보안 강화: SSL 암복호화 처리를 위해 물리적으로 분리된 웹 서버 사용
  5. 로드 밸런싱: 여러 대의 WAS를 연결하여 서버의 부하를 분산

현대 시스템 환경에서는 CDN(Content Delivery Network)을 통해 정적 콘텐츠를 웹 서버를 거치지 않고 직접 제공하는 경우도 많습니다. 이로 인해 시스템 성능과 사용 경험이 더욱 향상됩니다.

WAS와 Web Server의 협력 구조

웹 서버와 WAS는 다음과 같은 방식으로 협력합니다:

  • 정적 콘텐츠 요청: 웹 서버가 직접 응답
  • 동적 콘텐츠 요청: 웹 서버가 WAS로 요청을 전달하고, WAS가 처리한 결과를 클라이언트에 응답

WAS의 필요성

  • 웹 페이지는 정적 및 동적 콘텐츠가 혼재
  • 동적 콘텐츠를 제공하기 위해 WAS가 필요
  • 웹 서버와 WAS의 기능 분리를 통해 효율성 및 보안 강화

추가 정보: HTTP Daemon (Httpd)

Httpd는 Apache HTTP 서버의 데몬 이름으로, 백그라운드에서 실행되며 들어오는 서버 요청을 처리하는 소프트웨어 프로그램입니다.

  • 여러 종류의 애플리케이션(Java, PHP 등)을 함께 사용할 수 있음
  • 로드 밸런싱은 Httpd 외에도 NGINX, 전용 로드 밸런서 장비 등 다양한 방법으로 구현 가능

요약

WAS는 동적 콘텐츠 제공과 효율적 자원 사용을 위해 필수적인 컴포넌트입니다. 웹 서버와의 협력을 통해 서버 부하를 줄이고 보안을 강화하며, 현대적인 웹 서비스 환경에서 중요한 역할을 수행합니다. 또한, CDN이나 다양한 로드 밸런싱 기법을 통해 성능과 확장성을 극대화할 수 있습니다.

Leave a Comment