ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WEB 서버와 WAS
    STUDY/백엔드 2020. 12. 17. 17:01

    WEB 서버란?

    - 소프트웨어와 하드웨어로 구분되며, 소프트웨어 WEB서버는 클라이언트로부터 HTTP 요청을 받아들이고 HTML 등의 웹 페이지 문서에 반응하는 컴퓨터 프로그램으로, HTTP 프로토콜을 기반으로 하여 브라우저의 요청을 서비스하는 기능을 담당한다.

     

    WAS란?

    HTTP를 통해 컴퓨터나 장치에 application을 수행해주는 미들웨어이다. 동적 서버 컨텐츠를 수행한다는 것으로 일반 WEB 서버와 구별되며, 주로 데이터베이스 서버와 같이 수행된다.

     

     

    1) 차이점

    • WEB 서버는 정적인 컨텐츠(html, css, 이미지)를 제공하고, WAS는 DB조회나 어떤 로직을 처리하는 동적인 컨텐츠를 제공하는 서버이다. 즉, 정적 컨텐츠 요청이 오면 WEB 서버에서 수행하고, 동적 컨텐츠 요청이 오면 WEB서버가 WAS로 요청을 넘겨 WAS에서 처리한 후 사용자에게 결과를 전달한다.

     

    • 동작처리
      1. WEB 서버
        • 정적 컨텐츠 요청이 오면 처리해서 응답
        • 동적 컨텐츠 요청이 오면 WAS로 요청을 넘기고, 처리 결과를 받아서 응답한다.
      2. WAS
        • 웹서버로부터 요청이 오면 컨테이너가 받아서 처리한다.
        • 컨테이너는 web.xml을 참조하여 해당 서블릿에 대한 쓰레드 생성하고, httpServletRequest와 httpServletResponse 객체를 생성하여 전달한다.
        • 컨테이너는 담당 서블릿을 호출한다.
        • 호출된 서블릿의 작업을 담당하게 된 쓰레드는 doPost()또는 doGet()을 호출한다.
        • 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response객체에 담아 컨테이너에 전달한다.
        • 컨테이너는 전달받은 Response객체를 HTTPResponse형태로 바꿔 웹서버에 전달하고 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킨다.

    • WEB 서버 사용 이유
      1. WAS가 해야할 일의 부담을 줄일 수 있다. 즉, WAS앞에 웹 서버를 둬서 웹 서버에서는 정적 컨텐츠만 처리하도록 하고, WAS는 애플리케이션의 로직만 수행하도록 기능을 분배해서 서버의 부담을 줄이기 위해 사용한다.
      2. WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위해서 사용한다. 클라이언트와 연결하는 포트가 WAS에 직접 연결되어 있으면 중요한 설정 파일들이 노출될 수 있기 때문이다. 웹 서버와 WAS에 접근하는 포트가 다르기 때문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수 있다.
    • WAS 사용 이유
      1. 만약 WEB 서버만 사용하게 된다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어놓고 서비스를 해야한다. 이렇게 수행하면 자원이 부족하기 때문에, WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 결과를 만들어서 그때그때 제공함으로써 자원을 효율적으로 사용할 수 있다.

     

    2) 종류

    • WEB 서버
      1. Apache
      2. nginx
      3. Mincrosoft IIS
    • WAS
      1. Tomcat
      2. Jeus
      3. JBoss
      4. Web Logic
      5. WepSphere

    3) Apache & Tomcat

    • Apache와 Tomcat 연동 이유
      1. 과거에는 Tomcat이 WEB 서버의 기능을 갖추고 있지만 Apache보다 느린 속도처리를 보였고, 이로 인해 정적인 페이지는 Apache가 처리하고 동적인 페이지는 Tomcat이 처리함으로써 부하를 분산하는 이유로 연동
      2. 현재는 Tomcat이 많이 발전해 Apache에 뒤쳐지지 않을만큼 역할을 수행하지만, Apache 내에서만 설정할 수 있는 부분이나 Apache가 제공하는 유용한 모듈들을 Tomcat에서 사용할 수 없기 때문에 연동한다. 
    • Apache와 Tomcat 연동 방법
      1. mod_jk
        • URL이나 콘텐츠 별로 유연한 매핑이 가능하다.(정적 콘텐츠는 웹서버, 동적 콘텐츠는 WAS가 처리)
        • mod_proxy보다 빠르게 동작하기도 한다.
        • 벌도의 모듈 설치가 필요하다.(tomcat-connector 이용하여 모듈 설치 및 worker 설정)
        • 처리 방식
          1. 아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정
          2. 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청
          3. 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인한다. 요청을 톰캣에서 처리해야 하는 경우 아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달
          4. 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려준다.
          5. 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송.
      2. mod_proxy,mod_proxy_ajp
        • 정적 데이터에 대한 요청을 proxy에서 처리하여 클라이언트에게는 빠른 서비스를, 서버에는 불필요한 자원 낭비의 감소를 얻을 수 있다.
        • 특정 WAS에 의존하지 않는다.
        • 별도의 모듈 설치가 필요없어 설정이 간단하다.(proxy에 대한 설정만 해주면 된다.)
    • 연동 관련 참고

    'STUDY > 백엔드' 카테고리의 다른 글

    Bean  (0) 2021.01.05
    Mybatis  (0) 2020.12.31
    Server Log  (0) 2020.12.28
    Apache Spring boot(내부 tomcat) 연동  (0) 2020.12.24
    TC(Test Case) & JUnit  (0) 2020.12.18
Designed by Tistory.