ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WAS(Web Application Server)와 WS(Web Server) 차이점
    WEB & CS 2023. 10. 4. 22:22

    Static Pages

    • 저장된 정적인 파일
    • 예 : image, html, css, js

     

    Dynamic Pages

    • 웹 서버에 의해 실행되는 프로그램을 통해서 만들어지는 결과물
      • Servlet : WAS 위에서 돌아가는 Java 프로그램
    • 개발자는 Servlet에서 doGet()을 구현

     

    Web Server

    • 정적인 리소스를 서비스하는데 특화
    • 클라이언트의 http 요청을 받아 요청에 맞는 정적 컨텐츠를 제공한다.
    • 비즈니스 로직을 처리하지 않는다.
    • SSL/TLS를 사용해 암호화된 HTTPS 연결을 제공하여 보안을 강화
    • 여러 대의 서버로 분산된 트래픽을 처리하기 위해 로드밸런싱 수행 가능
    • Reverse Proxy로 동작하여 클라이언트의 요청을 WAS로 전달이 가능하다.
      • WS와 WAS를 분리하여 웹 애플리케이션의 보안과 성능을 개선
    • 예 : Nginx, Apache 등등

     

    Web Application Server

    • Web Server + Web Container
    • 웹 컨테이너 혹은 서블릿 컨테이너라고 불린다.
      • jsp, servlet을 실행시킬 수 있는 소프트웨어를 만한다.
    • 클라이언트 요청에 따라 동적인 웹 페이지를 생성
    • 데이터베이스와의 상호작용, 트랜잭션 처리, 보안, 세션 관리 등 웹 애플리케이션의 핵심 비즈니스 로직을 수행
    • 비즈니스 로직 실행 결과를 HTML, JSON 등의 형식으로 클라이언트에 전달한다.
    • 웹 애플리케이션에서 발생하는 데이터베이스 등의 작업은 트랜잭션 단위로 관리
    • 인증, 권한, 부여, 암호화 등의 보안 기능을 제공하여 보안을 강화한다.
    • 세션 관리를 지원하여 클라이언트의 상태 정보를 저장하고 관리한다.
    • 예 : Apache Tomcat, Red Hat JBoss 등이 있다.

     

    WS와 WAS의 필요성

    • Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.
    • WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.
    • WS와 WAS를 분리하는 이유
      • 서버 부하 방지 : 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려져 페이지 노출 시간이 늘어난다.
      • 보안 강화 : SSL에 대한 암복호화 처리에 Web Server를 사용
      • 여러 대의 WAS 연결 가능 : 로드 밸런싱을 위해서 WS를 사용하고 무중단 운영을 위한 장애 극복이 쉽다.
    • WS를 WAS 앞에 두고 필요한 WAS들을 WS에 플러그인 형태로 설정하면 더 효율적인 분산 처리가 가능

     

    웹 서버 아키텍쳐

    • Client - WS - WAS - DB 구조 동작과정
      1. WS가 클라이언트로부터 http 요청을 받는다.
      2. WS가 받은 http 요청(request)을 WAS로 보낸다.
      3. WAS는 관련 servlet을 메모리에 올린다.
      4. WAS는 web.xml을 참조하여 해당 servlet에 대한 Thread를 생성한다.
      5. HttpServletRequest와 HttpServletResponse 객체를 생성해 servlet에 전달한다.
      6. Thread는 servlet의 service() 메서드를 호출한다.
      7. service()메서드는 요청에 맞게 doGet(), doPost()를 호출한다.
      8. 호출된 메서드(doGet(), doPost())는 인자에 맞게 생성된 적절한 동적 페이지를 response 객체에 담아 WAS에 전달한다.
      9. WAS는 response객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
      10. 생성된 Thread를 종료하고 HttpServletRequest와 HttpServletResponse 객체를 제거한다.

     

     

    참고)

    MiddleWare

    • Client - MiddleWare Server - DB Server(DBMS)
    • MiddleWare 동작 과정
      1. Client는 단순히 요청만 중앙에 있는 MiddleWare Server에게 보낸다.
      2. MiddleWare Server에서 대부분의 로직이 수행된다.
      3. 이때, 데이터를 조작할 일이 있으면 DBMS에 부탁한다.
      4. 로직의 결과를 Client에게 전송한다.
      5. Client는 그 결과를 화면에 보여준다.
    • 비즈니스 로직을 Client와 DBMS 사이의 MiddleWare Server에서 동작하도록 함으로써 Client는 입력과 출력만 담당하게 된다.

     

     

    출처)

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

    https://velog.io/@jinyeong-afk/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-WSWeb-Server%EC%99%80-WASWeb-Application-Server%EC%9D%98-%EC%B0%A8%EC%9D%B4

Designed by Tistory.