본문 바로가기
Programming/Web

[WEB] Web Server(웹서버) / WAS(웹어플리케이션) / Web Container

by prinha 2020. 7. 30.
반응형

 

▶ Static Page(정적 페이지)

 - 웹 서버는 파일 경로 이름을 받아 경로와 일치하는 파일 컨텐츠를 반환

 - 항상 동일한 페이지 반환

 - ex) image, html, css, javascript 파일과 같이 컴퓨터 저장되어 있는 파일들

 

▶ Dynamic Page(동적 페이지)

 - 파라미터의 내용에 맞게 동적인 컨텐츠를 반환

 - 웹 서버에 의해 실행되는 프로그램을 통해 만들어진 결과물을 반환 (ex. Servlet)

 


 

 

자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS분리

 

▶ Web Server

 1) 웹 서버의 개념

    - 하드웨어 : Web서버가 설치되어있는 컴퓨터

    - 소프트웨어 : 클라이언트로부터 HTTP요청을 받아 정적인 컨텐츠를 제공하는 프로그램

 2) 웹 서버의 기능

    - HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 기능을 담당

    - 기능 1) 정적인 컨텐츠 제공 / WAS를 거치지않고 바로 자원 제공

    - 기능 2) 동적인 컨텐츠 제공을 위한 요청 전달 / 클라이언트의 요청을 WAS에 request, WAS가 처리한 결과를 response

 3) 웹 서버의 예 : Apache Server, Nginx, IIS 등

 

▶ WAS(Web Application Server) = Web Container = Servlet Container

 1) WAS의 개념

    - WAS = Web Server + Web Container

    - DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기위해 만들어진 어플리케이션 서버

    - HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)

    - JSP, Servlet 구동 환경 제공

 2) WAS의 역할

    - Web Server 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었음

    - 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산환경에서 사용

    - 주로 DB서버와 같이 수행됨

    - 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는데 있어 성능상 큰 차이가 없음

 3) WAS의 주요 기능

    - 프로그램 실행 환경과 DB접속 기능 제공

    - 여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능

    - 업무를 처리하는 비즈니스 로직 수행

 4) WAS의 예 : Tomcat, JBoss, Jeus, Web Sphere 등

 


Web Service Architecture

다양한 구조를 가질 수 있음

1. Client -> Web Server -> DB

2. Client -> WAS -> DB

3. Client -> Web Server -> WAS -> DB

 

 

Client -> Web Server -> WAS -> DB 구조의 동작 과정

1. Web Server는 클라이언트로부터 HTTP 요청을 받는다.

2. Web Server는 클라이언트의 요청(request)을 WAS에 보낸다.

3. WAS는 관련된 Servlet을 메모리에 올린다.

4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)

5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.

     - Thread는 Servlet의 service() 메소드를 호출한다.

     - service() 메소드는 요청에 맞게 doGet() 또는 doPost() 메소드를 호출한다.

     - protected doGet(HttpServletRequest request, HttpServletResponse response)

6. doGet() 또는 doPost() 메소드는 인자에 맞게 생성된 적절한 동적 페이지를 response 객체에 담아 WAS에 전달한다.

7. WAS는 Response객체를 HttpResponse형태로 바꾸어 Web Server에 전달한다.

8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

 

 

 

 

출처:https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

반응형