본문 바로가기
일/개발, IT정보

Web ↔ WAS 구조 및 동작 과정

[주제] Web Server ↔ WAS 구조 및 동작과정

 

이번 글에서는 이전에 살펴보았던 웹 사이트에 접속하는 전체 흐름 중, 웹 서버 뒷단의 Web Server ↔ WAS 간의 상세 구조와 동작과정을 정리해보도록 하겠습니다.

 

1.    웹 서버(Web Server)와 WAS(Web Application Server) 개념

- 웹 서버(Web Server)란?

웹 브라우저에서 Client(웹 브라우저)로부터 HTTP Request를 받은 후, HTML, CSS, 이미지 등과 같은 정적 컨텐츠들을 제공해주는 프로그램입니다.

대표적인 예로 Apache, Nginx, IIS, WebtoB 등이 있습니다.

-  WAS(Web Application Server)란?

DB 조회 및 다양한 로직 처리 요구 시 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버입니다.

대표적인 예로 Tomcat, JEUS, JBoss 등이 있습니다.

 

2.    Web Server ↔ WAS ↔ DB 구조

일반적으로 웹 서버(Web Server) 뒷 단계의 구조는 아래와 같습니다.

웹 서버는 웹 브라우저의 요청을 받아서, 요청된 페이지의 logic 및 데이터베이스와의 연동을 위해 WAS(Web Application Server)에 처리를 요청합니다.

WAS는 데이터베이스와 데이터 처리를 수행하고, logic 및 데이터베이스 작업의 처리 결과를 웹 서버에 보냅니다.

웹 서버는 다시 웹 브라우저에 응답하며, 요청 결과를 클라이언트에게 보여줍니다.

 

3.    Web Server ↔ WAS 동작과정

     웹 서버(Web Server)는 클라이언트로부터 HTTP Request를 받고, 동적 처리의 경우 WAS에 요청합니다.

     컨테이너(Container)는 HttpServletRequest, HttpServletResponse 객체를 생성합니다.

     컨테이너(Container)란?

웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 매핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장하는 역할을 수행합니다.

     서블릿(Servlet)

동적 웹 페이지를 만들 때 사용되는 Java 기반의 웹 애플리케이션 프로그래밍 기술입니다. 

서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해줍니다.

     web.xml(배포서술자)을 참조하여, 사용자가 요청한 URL이 어느 서블릿(Servlet)에 대한 요청인지 찾습니다.

     web.xml

WAS가 실행되면 최초로 실행되는 파일입니다. 

컨테이너가 서블릿들을 생성하고 어떤 서블릿이 어떤 요청(Mapping)을 할 것인지 등에 대한 정보들을 가지고 있습니다.

     해당 서블릿에서 service() 메소드를 호출하고, POST/GET 여부에 따라 doPost() 또는 doGet()이 호출됩니다.

     Service() 메소드

    특정 HTTP 요청(GET, POST 등)을 처리하는 메서드 (doGet(), doPost() 등)를 호출합니다.

     호출된 doPost() 또는 doGet() 메소드는 동적 페이지를 생성한 후, HttpServletResponse 객체에 실어 컨테이너에 전달합니다.

     컨테이너는 전달받은 객체를 웹 서버에 전달한 후, 요청(HttpServletRequest) 및 응답(HttpServletResponse)객체를 소멸시킵니다.