본문 바로가기
기타/취준 기록

[기술 면접 준비] WAS의 구조와 개념: Web Server와의 협업 및 요청 처리 과정

by 옹쑥이 2024. 11. 20.

Web Server와 WAS의 분리

왜 Web Server와 WAS를 분리해야 할까?

  1. 부하 분산
    • Web Server가 여러 WAS에 요청을 분배하는 로드 밸런서 역할을 하여 성능을 향상시킵니다.
  2. 장애 처리 용이
    • 한쪽에서 장애가 발생해도 다른 쪽에 영향을 최소화하여 안정성을 유지할 수 있습니다.
  3. 보안 강화
    • Web Server는 외부에 노출되지만 WAS는 내부 네트워크에 위치하여 WAS에 대한 직접적인 공격을 방어합니다.

참고

더보기

로드밸런싱과 클러스터링

로드밸런싱

  • 다수의 서버에 요청을 분산하여 서버 부하를 줄이는 방식입니다.
  • 하지만 세션 공유 문제가 발생할 수 있습니다.
    클라이언트가 이전 요청을 처리했던 서버와 다른 서버로 연결될 경우 세션이 끊길 수 있습니다.

클러스터링

  • 하나의 서비스를 제공하는 여러 대의 서버를 하나로 묶는 방식입니다.
  • 서버 간 데이터를 공유하여 로드밸런싱에서 발생하는 세션 공유 문제를 해결할 수 있습니다.

요청 처리 과정

WAS와 Web Server의 협업을 통한 요청 처리 과정은 다음과 같습니다:

  1. HTTP 요청 수신
    • Web Server는 웹 브라우저나 클라이언트로부터 HTTP 요청을 받습니다.
  2. WAS로 요청 전달
    • Web Server는 요청이 동적 콘텐츠 관련이라면 이를 WAS에 전달합니다.
  3. Thread 생성 및 Servlet 실행
    • WAS는 web.xml을 참조하여 요청에 맞는 Servlet을 실행하기 위해 Thread를 생성합니다.
    • Servlet의 주요 메서드:
      • init(): 초기화 작업 수행.
      • service(): 요청에 맞는 작업 처리.
      • destroy(): 작업 종료 후 자원 정리.
  4. doGet()/doPost() 메서드 호출
    • service() 메서드는 요청의 유형에 따라 doGet() 또는 doPost() 메서드를 호출합니다.
    • Servlet은 적절한 동적 데이터를 생성하여 응답(Response)에 담습니다.
  5. 응답 반환
    • WAS는 생성된 동적 데이터를 HttpResponse 형태로 변환하여 Web Server에 전달합니다.
    • Web Server는 이를 클라이언트에 반환합니다.
  6. 자원 정리
    • 생성된 Thread를 종료하고, HttpServletRequestHttpServletResponse 객체를 제거하여 메모리 자원을 정리합니다.

Servlet과 Servlet Container

  • Servlet:
    • 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램입니다.
    • 클라이언트의 요청에 따라 동적으로 데이터를 처리하고 반환합니다.
  • Servlet Container:
    • Servlet을 실행하는 컴포넌트로, 클라이언트의 HTTP 요청을 처리합니다.
    • Tomcat이 대표적인 Servlet Container입니다.

WAS의 주요 기능과 장점

주요 기능

  1. 동적 요청 처리
    • 클라이언트 요청에 따라 데이터를 생성하거나 변경하며, 사용자 맞춤형 정보를 제공합니다.
  2. 비즈니스 로직 실행
    • 애플리케이션의 핵심 로직을 수행하여 요청에 맞는 데이터를 처리합니다.
  3. DB 연동
    • 데이터베이스와 통신하여 데이터를 읽고 저장하며, 필요한 정보를 반환합니다.

장점

  1. 통합 처리
    • Web Server와 Web Container의 역할을 모두 수행 가능.
  2. 비즈니스 로직 처리
    • 사용자 요청에 따라 데이터 생성, 변경, 삭제가 가능합니다.
  3. 확장 가능성
    • 다양한 동적 애플리케이션과 연동하여 복잡한 요구사항도 처리 가능합니다.

WAS의 중요성

WAS는 복잡한 웹 애플리케이션의 요구사항을 해결하고 다음과 같은 이유로 필수적입니다:

  1. 동적 처리 능력
    • 사용자 요청에 따라 맞춤형 데이터를 생성 및 반환.
  2. 확장성과 유연성
    • 다양한 비즈니스 로직과 데이터베이스 연동으로 복잡한 작업 처리 가능.
  3. 효율적인 리소스 관리
    • Web Server와 WAS가 각자 최적화된 역할을 수행하여 서버 리소스를 효율적으로 사용.

정리하며

Web Server와 WAS는 각기 다른 역할을 통해 효율적이고 안정적인 웹 서비스를 제공합니다.

  • Web Server는 정적 콘텐츠 처리와 부하 분산 역할을,
  • WAS는 동적 콘텐츠 생성과 비즈니스 로직 처리 역할을 수행합니다.