Web

[Web] 웹서버와 WAS

meizzi 2024. 9. 9. 11:34
728x90
반응형

1. 웹서버(Web Server)

클라이언트(ex. 웹 브라우저)의 요청을 받아 정적인 컨텐츠(HTML, CSS, 이미지, JavaScript 파일 등)을 처리하고 응답하는 역할
  •  특징
    • 정적 컨텐츠 제공
      • HTML, CSS, 이미지, JavaScript 파일과 같은 정적인 리소스를 클라이언트에 전달
      • WAS에 거치지 않고 바로 자원 제공
    • HTTP 요청 처리
      • 주로 HTTP/HTTPS 프로토콜을 통해 클라이언트의 요청을 처리하고 응답
      • 동적인 컨텐츠 제공을 위한 요청 전달
      • 클라이언트의 요청을 WAS로 보내고 WAS가 처리한 결과를 클라이언트에게 전달
    • 기능의 단순성
      • 요청된 정적 파일을 찾아 반환하는 것이 주요 기능이기 때문에 매우 단순한 구조
  • 대표적인 예
    • Apache HTTP Server
    • Nginx
  • 클라이언트가 브라우저에서 특정 URL을 요청하면, 웹서버는 해당 요청을 받고 서버에 저장된 HTML 페이지나 이미지 파일 등을 찾아 클라이언트에게 전달

2. WAS(Web Application Server)

동적인 웹 어플리케이션을 실행하고 제공하는 서버
동적인 컨텐츠(데이터베이스 조회, 사용자 세션 관리 등)를 처리하는 로직이 포함된 어플리케이션 실행
  • WAS = Web Server + Web Container
  • 웹 컨테이너(Web Container) or 서블릿 컨테이너(Servlet Container) 라고도 불림
    • Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어
    • 즉, WAS는 JSP, Servlet 구동 환경 제공
  • 특징
    • 동적 컨텐츠 관리
      • 서버에서 실행되는 코드(JSP, Servlet, Spring 등)를 통해 데이터베이스와의 상호작용, 비즈니스 로직 처리 등 등을 수행
    • 어플리케이션 관리
      • 웹 어플리케이션을 실행하고 데이터베이스와의 연결, 트랜잭션 관리, 세션 관리 등의 어플리케이션의 전반적인 로직 관리
    • 웹 서버 기능 포함
      • 내부적으로 웹 서버의 기능을 가지고 있어 정적인 컨텐츠도 함께 처리 가능
  • 대표적인 예
    • Tomcat
    • JBoss
    • WebLogin
    • WebSphere
  • 클라이언트가 로그인 요청을 보내면, WAS는 요청을 받아서 데이터베이스를 조회하고 사용자가 입력한 정보가 맞는지 확인한 후, 결과에 따라 응답을 생성하여 클라이언트에 반환

3. 웹서버와 WAS 차이

구분 웹서버(Web Server) WAS(Web Application Server)
주요 역할 정적 컨텐츠 제공 (HTML, CSS, 이미지 등) 동적 컨텐츠 처리 (어플리케이션 로직 실행)
처리 대상 정적 파일 (HTML, CSS, JS, 이미지 등) 동적 요청 (JSP, Servlet, 비즈니스 로직, DB 연동 등)
기능 HTTP 요청 처리 및 정적 리소스 반환 어플리케이션 실행, 트랜잭션 처리, 비즈니스 로직 처리
예시 Apache, Nginx Tomcat, JBoss, WebLogic
특징 경량화, 빠른 정적 파일 처리 무거운 작업(비즈니스 로직, DB 처리, 트랜잭션 관리 등) 담당

4. 웹서버와 WAS 사용

  • 일반적으로 웹서버와 WAS는 함께 배포되어 각자 역할 분담
    • 즉, 웹서버가 클라이언트로부터 받은 요청을 해석한 후, 정적 컨텐츠는 직접 처리하고, 동적 컨텐츠 요청(예: 데이터베이스 조회, 사용자 인증 등)은 WAS로 전달하여 처리
  • 이러한 방식으로 웹서버와 WAS가 협력함으로써 시스템의 성능을 최적화하고, 각각의 서버가 자신의 역할에 집중하여 효율적으로 동작
  • 예시
    • Nginx + Tomcat
    • Apache + Tomcat 
      • Nginx나 Apache는 클라이언트의 HTTP 요청을 받아 정적 리소스는 직접 처리하고, 동적 요청은 Tomcat 같은 WAS로 전달
      • Tomcat은 동적 요청을 처리하고, 결과를 Nginx나 Apache를 통해 클라이언트에게 전달

5. 웹서버와 WAS를 구분하는 이유

  • 웹서버가 필요한 이유
    • 클라이언트에 정적인 컨텐츠를 보내는 과정
      • 이미지 파일과 같은 정적인 컨텐츠들은 웹 문서가 클라이언트로 전달될 때 함께 가는 것이 아니라 클라이언트는 웹 문서를 받고 그에 맞는 이미지 파일 등을 다시 서버에 요청하여 그때 이미지 파일 등을 받아옴
      • 웹서버를 통해 정적인 컨텐츠를 WAS까지 가지 않고 빠르게 전달하여 기능을 분배함으로써 서버의 부담 감소
  • WAS가 필요한 이유
    • 웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재
    • 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 함
    • 이때, 웹서버만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 함
    • 하지만 이렇게 수행하면 자원이 절대적으로 부족하다는 문제점 발생
    • 따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용

6. 최근 동향

  • 최근에는 Nginx와 같은 웹서버가 매우 가볍고 빠른 성능을 제공하여, 웹서버와 WAS를 분리하지 않고 Nginx나 Apache 같은 웹서버를 WAS처럼 활용하는 경우도 있음
  • 또한 Spring Boot와 같은 프레임워크는 자체적으로 내장 WAS(Tomcat)를 포함하여, 단일 어플리케이션에서 정적 및 동적 콘텐츠를 모두 처리할 수 있음

결론적으로, 웹서버는 정적 콘텐츠 처리, WAS는 동적 콘텐츠 처리를 담당하며, 협력하여 웹 어플리케이션의 성능과 확장성을 높이는 방식으로 사용

728x90
반응형