웹 서비스의 요청 및 응답의 흐름은 아래 그림과 같은 순서로 진행된다.
클라이언트 요청이 들어오면 Web Server는 정적 콘텐츠를 처리하고, WAS에게 동적 콘텐츠 처리를 요청한다.
WAS는 DB와 통신하면서 해당 클라이언트가 가지고 있는 값을 동적으로 불러와 다시 클라이언트에게 전달한다.
- Web Server : 정적(html, css..)인 요청 처리
- WAS : 동적(DB..)인 요청처리, JSP, Servlet구동환경 제공
💡 Web Server
- 웹 서버란 클라이언트(사용자)가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버에서 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 여기서 정적 컨텐츠란 단순 HTML 문서, CSS, JavaScript, 이미지, 파일 등 즉시 응답 가능한 컨텐츠다.
- 동적인 컨텐츠 제공을 위해 WAS로 클라이언트의 요청을 전달하고 처리한 결과를 클라이언트에게 응답하는 역할도 수행한다. (프록시 역할도 수행)
- 대표적인 웹 서버는 Apache, Nginx, ISS 등이 있다.
WebServer가 필요한 이유는?
- 이미지 파일과 같은 정적인 파일들은 웹 문서(HTML)가 클라이언트로 보내질 때 함께 보내지지 않는다. HTML 문서를 먼저 보내고 그에 맞게 필요한 정적 컨텐츠를 보내게 되는데, 이 과정에선 WAS까지 거치지 않고 앞단에서 빠르게 웹 서버에서 처리해줄 수 있다.
- 따라서 웹 서버에서는 정적 컨텐츠만을 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.
💡 WAS(Web Applicaion Server)
- WAS는 DB조회나 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server다.
- 클라이언트 요청에 따라 동적으로 각각 다른 형태의 데이터를 반환한다.
- 웹 서버는 어플리케이션 서버(Application Server)와 직접적으로 통신하지 못해서 중간 다리 역할로 WAS(uwsgi, tomcat, jboss)를 두고, 각자에 맞는 방식으로 요청을 변환해주는 역할을 한다.
이 때, 클라이언트의 요청은 서블릿들(Servlets), JSP(JavaServer Pages) 파일들, enterprise beans, 그리고 그것들을 supporting하는 클래스들로 구성되어 있을 수 있다. - 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 불린다.
- 기능
- 대표적인 WAS로는 Apache TomCat, JBoss, Jeus, Resin , Uwsgi 등이 있다.
WAS가 필요한 이유는?
- 웹 페이지는 정적 컨텐츠 뿐만 아니라 동적 컨텐츠도 존재한다. 따라서 웹 서버만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 진행해야 한다.
- 자원은 한정적이므로 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 제공함이 자원을 효율적으로 사용할 수 있다.
'Back-End 공부 > Spring' 카테고리의 다른 글
Spring에서 발생하는 대표적인 순환참조 문제 해결하기 (0) | 2024.01.24 |
---|---|
생성자 객체 생성 방식의 단점을 극복한 builder 패턴 (1) | 2024.01.23 |
코드로 보는 Servlet과 Controller의 차이 GET POST 요청 (0) | 2024.01.19 |
스프링 에러메시지 공통소스화 (0) | 2024.01.18 |
스프링 RestFul - 기본 CRUD 만들기 프로젝트 (0) | 2024.01.18 |