[Web] WAS 란 무엇인가? Web Server와 차이점은 무엇인가?

2022. 4. 1. 11:23CS/스터디

WAS (Web Application Server) 란? 

- DB 조회나 다양한 로직 처리를 요구하는 동적인 콘텐츠를 제공하기 위해 만들어진 Application Server이다.

- Web Container , Servlet Container라고도 불린다. (Container 란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다.)

- WAS는 JSP, Servlet 구동 환경을 제공한다.

 

WAS 역할

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

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

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

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

 

예) Tomcat, Web Sphere 

 

Web Server 란?

- 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램

- (하드웨어 측면) : 위에서 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터

 

웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다. image 파일이나 css, js, 를 포함한 HTML 문서가 클라이언트로 전달된다.

 

WAS와 Web Server의 차이를 보여준다,

Web Server가 필요한 이유

- 이미지 파일이나 정적인 파일들은 클라이언트가 HTML 문서를 먼저 받고 필요한 부분을 다시 서버로 요청하는 것이다.

Web Server를 통해 정적인 파일들을 application server까지 가지 않고 빠르게 보내줄 수 있다. 정적 콘텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

 

WAS 가 필요한 이유

- 웹페이지는 정적 콘텐츠뿐만 아니라 동적 콘텐츠도 모두 존재한다. 그래서 사용자 요청에 맞게 동적 콘텐츠를 만들어서 제공해야 한다.

따라서 WAS를 통해 요청에 맞는 데이터를 DB에 가져와서 비즈니스 로직에 맞춰 상황에 따라 결과를 만들어서 제공하여 효율적으로 사용할 수 있다.

 

Web Service Architecture  구조 세 가지

  1. 클라이언트 -> Web Server -> DB
  2. 클라이언트 -> WAS -> DB
  3. 클라이언트 -> Web Server -> WAS -> DB

구조 세 가지 중 3번의 동작 과정

 

1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받기
2. Web Server는 클라이언트의 요청을 WAS에 보내기
3. WAS는 관련된 Servlet을 메모리에 올림
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달
     5-1. Thread는 Servlet의 service() 메서드를 호출
     5-2. 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

 

[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

728x90