웹 어플리케이션의 이해

고라니·2021년 11월 11일
0

갓영한님 스프링 MVC 강의를 듣고 정리한 내용들입니다.

WS / WAS

Web Server (ex-Apache) 와 Web Application Server (ex-Tomcat) 의 경계는 기준에 따라 모호하지만, 일반적으로 WS는 정적 리소스(이미지, html 등 파일) , WAS는 어플리케이션 로직을 말한다.
그리고 WAS는 WS의 기능을 제공하기 때문에 WAS, DB만 가지고 시스템을 구성할 수 있다. 하지만 효율적인 리소스 관리를 위해 WS + WAS + DB 로 역할을 전담하여 웹 시스템을 구성하게 된다.

Servlet

웹 브라우저가 생성한 http request message 가 WAS에 왔다고 가정해보자.
이 길고 복잡한 메세지를 파싱 하여 필요한 처리 및 공통 처리를 해주고, 비즈니스 로직을 실행 후 다시 response message 를 생성해서 보내야 하는데, 이 비즈니스 로직 외에 번거롭고 필요한 일들을 해주는 것이 서블릿이다.
HttpServletRequest 와 HttpServletResponse 를 통하여 개발자는 HTTP 스펙을 편리하게 사용할 수 있게 된다.

흐름
http 요청 시
-> WAS는 먼저 Request, Response 객체를 새로 만든 후 서블릿 객체를 호출함.
-> 개발자가 만들어진 Request 객체를 통해 http request 정보를 편리하게 꺼내서 사용함.
-> 개발자가 Response 객체에다가 http response 정보를 편리하게 입력함.
-> WAS는 Response 객체에 담겨있는 내용으로 http 응답 정보를 생성함.

Servlet Container란?

톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
WAS에는 여러 개의 컨테이너가 존재할 수 있다.
각 컨테이너는 자신이 생성한 서블릿 객체들의 생명주기까지 모두 싱글톤으로 관리한다.(Servlet 객체를 자동으로 생성하고, 초기화 및 호출 종료까지 관리)
왜 싱글톤일까?
고객마다 request/response 해줄 내용들은 당연히 다 다르다.
그래서 Request, Response 객체는 항상 새로 생성되는게 맞음.
근데 애플리케이션 로직이 들어있는 서블릿 컨테이너 속의 서블릿 객체는 모두에게 공통적이기 때문에 싱글톤으로 관리하는 것이 효율적이다.

profile
공부를 열심히 하는 학부생

0개의 댓글