Study/개발일지

[백엔드 TIL] WEB 과 WAS 개념

아이바 2023. 10. 18. 17:58

웹(Web)의 개념

WWW(World Wide Web)이란 인터넷에 연결된 전세계 사용자들이 서로의 정보를 공유할 수 있는 장소를 의미한다.

웹에는 수많은 '웹사이트(Website)'들이 있고, 각각의 웹사이트는 '웹 페이지(Web Page)'로 구성된다.
즉, 서로 연관된 내용으로 작성된 웹 페이지들의 집합을 웹 사이트라고 부른다. 웹이란 온라인 상에 다양한 정보(웹 페이지)가 서로 연결(링크)되어 있는 것이라고 볼 수 있다.

 

서버(Server)

네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템

 

웹 서버 ( Web Server ) 

- 클라이언트의 요청을 받아 HTML이나 Object를 HTTP 프로토콜을 기반으로 이용해서 전송하는 것

(정적 컨텐츠를 제공하는 서버)

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

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

- Apache , IIS(Internet Information Server), Nginx를 예로 들 수 있다.

 

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

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

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

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

    - 동적 서버 콘텐츠를 수행하는 것으로 주로 DB 서버와 같이 수행된다.

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

- WAS 또한 웹서버와 동일하게 HTTP 기반으로 동작

- Tomcat, JBoss, Jeus 등이 있다.

 

서블릿(Servlet)

서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.

클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 WAS에 위임한다. 그러면 WAS는 각 요청에 해당하는 서블릿을 실행한다. 그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다.

 

Web Server와 WAS의 차이

 

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

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

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

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

 

 

Web Server와 WAS의 동작원리 

 

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

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

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

4. WAS는 web.xml 을 참고하여 Servlet에 대한 쓰레드를 생성하고, 

     httpServletRequest와 httpServletResponse 객체를 생성하여 Servlet에 전달한다. 

5. 쓰레드는 Servlet의 service()메소드를 호출한다. 

6. service()메소드는 요청에 맞게 doGet(), doPost()메소드를 호출한다. 

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

8. WAS는 전달받은 Response객체를 httpResponse형태로 바꿔 Web Server에 전달하고 생성된 Thread를 종료후, httpServletRequest, httpServletResponse객체를 제거한다. 

728x90