ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 개념정리 | Web Server & WAS 의 개념과 차이
    programming/etc. 2020. 6. 12. 00:25

     

    웹 서버 ( Web Server ) 


    ˇ 클라이언트의 요청을 받아 HTML이나 Object를 HTTP 프로토콜을 기반으로 이용해서 전송하는 것 (정적 컨텐츠를 제공하는 서버)

    사용자가 클라이언트로 요청을 보내오면 그 명령에 대한 처리를 실행하고 다시 사용자에게 답변을 보내준다.

    *정적인 컨텐츠 (.html ,  .jpeg , .css)

     

    ˇ 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 하며, 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할(정적데이터)을 한다.

     

    ˇ 사용자가 요청한 것들 중에 웹 서버 자체적으로 처리할 수 없는 것들을(정적 컨텐츠가 아닐 경우) 톰캣과 같은 컨테이너나 PHP 모듈과 같이 처리할 수 있는 곳으로 넘겨 처리 결과를 받아와서 사용자에게 넘겨주는 역할도 수행한다. (WAS에게 처리를 부탁후에 WAS가 처리해준 컨텐츠를 받아 웹서버는 응답[response]을 해준다)

     

    ˇ Apache , IIS(Internet Information Server), WebtoB 등이 해당

     

     

    웹 어플리케이션 서버 ( Web Application Server / WAS ) 


    ˇ 웹 서버 + 웹 컨테이너 = WAS

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

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

    - 주로 DB 서버와 같이 수행된다.

     

    ˇ 동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 ( DB조회, 로직처리가 요구되는 컨텐츠 ) 이다.

     

    ˇ JSP, Servlet 구동 환경을 제공하며 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부른다.

    *JSP와 Servlet을 실행 시킬 수 있는 소프트웨어가 컨테이너이다. 즉, WAS는 JSP,Servlet 구동환경을 제공한다.

     

    ˇ 웹상에서 사용하는 컴포넌트들을 올려놓고 사용하게 되는 서버

     

    ˇ EJB와 같은 빈들이 올라가게 되며, 서버에 따라 웹에 필요한 많은 기능들을 포함하고 있다.

     

    ˇJ2EE 스펙을 구현한 서버(JSP/ Servlet Container 와 EJB Container 로서의 기능)

     

    ˇ 가장 많이 사용하는 WAS 는 BEA사의 Web Logic, IBM 사의 Web Sphere, T-max 사의 Jeus, Tomcat, Redhot사의 JBoss등이 있다.

     

     

     

    컨테이너( Container )


    ˇ JSP와 Servlet을 이용하는 웹 응용 프로그램은 자바언어를 이용해서 작성할 수 있는데, JSP와 Servlet을 실행시킬 수 있는 소프트웨어를 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container) 라고 한다.

     

    ˇ Servlet Container , JSP Container, EJB Container 등의 종류가 있으며 대표적인 Web Container로는 자카르타 톰캣(JSP), RESIN, Web Logic, WebtoB 등이 있다.

     

    ˇ 웹 서버에서 JSP를 요청하면 톰캣에서는 JSP파일을 Servlet으로 변환하여 컴파일을 수행하고, Servlet의 수행결과를 웹 서버에 전달하게 된다.

     

     

    Web Server 와 WAS의 차이점


     WAS는 동적 서버 컨텐츠를 수행하지만 (동적인 처리를 담당하는 서버),

    Web Server는 정적인 HTML이나 이미지를 제공하는 서버이다.

     

    * WAS는 정적,동적 처리 둘다 가능하지만 정적처리를 WAS가 하게되면 부하가 많이 걸려 좋지 않다. 

    그래서 Web Server와 WAS 를 분리하여 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에게 제공하고, WAS는 DB조회나 다양한 로직을 처리하여 동적인 컨텐츠를 제공한다.

     

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

     

     

     

     

    Web Server 와 WAS의 일반적인 구성


    사용자가 브라우저에서 요청을 하게 되면 다음과 같이 Web Server와 WAS서버를 거쳐 응답이 돌아오게 된다. 

     

    사용자 요청(웹 브라우저) → Web Server → WAS(동적 처리) → Web Server → 사용자 응답 메세지(웹 브라우저)

     

     

     

     

     

     

     

     

     

    Web Service Architecture ( 웹 서비스 구조 )


    다양한 웹 서비스 구조를 가질 수 있다.

    • 1. Cilent → Web Server → DB
    • 2. Cilent →  WAS → DB
    • 3. Cilent → Web Server → WAS → DB

     

     

    [동작 과정]

     

     

     

     

    Cilent → Web Server → WAS → DB 구조의 동작 과정

     

    1. web Server는 웹 브라우저 클라이언트로 부터 HTTP 요청을 받는다.

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

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

    4. WAS (컨테이너)는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성하고(Thread Pool이용) httpServletRequest와 httpServletResponse 객체를 생성하여 Servlet에 전달한다.

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

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

              protected doGet(HttpServletRequest req , HttpServletResponse resp)

    5. 호출된 doPost(), doGet() 메소드는 인자에 맞게 생성된 적절한 동적 페이지를 Response객체에 담아  WAS(컨테이너)에 전달한다.

    6. WAS(컨테이너)는 전달받은 Response 객체를 HttpResponse형태로 바꿔 Web Server 에 전달하고 생성된 Thread를 종료 후 httpServletRequest, httpServletResponse 객체를 제거한다.

     

     

     

     

     

     

     

     

    참고 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html,https://jeong-pro.tistory.com/84

    'programming > etc.' 카테고리의 다른 글

    Servlet/JSP | Servlet, JSP 란?  (0) 2020.06.16
    개념정리 | MVC 패턴  (0) 2020.05.28
Designed by Tistory.