[CS]WAS와 WS의 차이점

Michelle Kim·2025년 5월 18일

CS-지식

목록 보기
14/15

WAS(Web Application Server)와 WS(Web Server)의 차이

WAS(Web Application Server)

비즈니스 로직을 넣을 수 있음
Tomcat, PHP, ASP, .NET 등

WS(Web Server)

비즈니스 로직을 넣을 수 없음
Nginx, Apache 등

Web Server와 WAS(Web Application Server)에 대해 상세히 설명

Web Server와 WAS

1. Web Server

  • 클라이언트에게 요청을 받고 정적인 Request라면 (html, css 등) 정적인 콘텐츠를 Response 합니다.

  • 클라이언트에게 요청을 받고 동적인 Request라면 WAS로 처리를 이관한 뒤 WAS에서 처리한 결과를 클라이언트에게 전달합니다.

대표적인 Web Server : Apache, WebtoB, Nginx, IIS 등등

2. WAS

DB 조회가 필요하거나 사용자의 입력을 받아 서버에서 가변적으로 로직을 수행하는 등의 동적인 처리가 필요한 요청을 처리하기 위해 만들어졌습니다. Web Container의 JSP/Servlet 구동 환경을 제공하고 프로그래밍 언어(JSP, ASP, PHP 등)로 작성한 뒤 HTML 문서로 만들고 Web Server로 전달합니다.

대표적인 WAS : Tomcat, Jeus, JBoss 등등

  1. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공.

  2. 여러 개의 트랜잭션을 관리.

  3. 업무를 처리하는 프로그래밍 언어의 비즈니스 로직을 수행.

  4. Web Service 플랫폼으로서의 역할 병행

WAS 작동 프로세스

  1. Web Server로 요청이 오면 컨테이너가 응답

  2. 컨테이너는 web.xml을 참조하여 해당 서블릿에 대한 쓰레드 생성하고 httpServletRequest와 httpServletResponse 객체를 생성하여 전달

  3. 컨테이너는 JSP/Servlet 호출

  4. 호출된 Servlet의 작업을 담당하게 된 쓰레드(2번에서 만든 스레드)는 doPost()또는 doGet()을 호출

  5. 호출된 doPost(), doGet() 메서드는 생성된 동적 페이지를 Response객체에 담아 컨테이너에 전달

  6. 컨테이너는 전달받은 Response객체를 HTTPResponse형태로 바꿔 WebServer에 전달하고 생성되었던 스레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킴

Web Server와 WAS 둘 다 사용하지 않고 WAS만 사용하면 되지 않을까요? 왜 Web Server와 WAS를 분리해놓은 걸까요?

이는 Web Server를 WAS 앞에 둠으로써 얻는 이점을 살펴보면 이유를 알 수 있습니다.

1. 기능을 분리하여 서버 부하 방지

Web Server를 두는 가장 큰 이유입니다. 만약 정적 콘텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 콘텐츠의 처리가 지연됨에 따라 수행 속도가 느려집니다. 그렇기에 단순한 정적 컨텐츠 요청은 Web Server에서 빠르게 클라이언트에 제공하여 WAS로 넘어오지 않게 막는 것이 좋습니다.

2. 물리적으로 분리하여 보안 강화

WebServer와 WAS는 Port번호가 다릅니다. 이렇게 물리적으로 두 개의 서버를 완전히 분리하여 보안을 강화시켜줄 수 있습니다. 또한 SSL에 대한 암복호화 처리에 Web Server를 사용하여 웹 서비스에 대한 보안을 강화시켜줄 수 있습니다.

3. 여러 대의 WAS를 연결 가능

Web Server하나에 여러 대의 WAS를 설치하고 Load Balancing을 하여 WAS의 부하를 더 낮춰줄 수도 있습니다.

profile
🇬🇧영국대학교)Computer Science학과 졸업 📚Data, AI, Backend 분야에 관심이 많습니다. 👉Email: kimbg9876@gmail.com

0개의 댓글