웹 서버(WS) VS 웹 애플리케이션 서버(WAS)
웹 서버
웹 서버는 HTTP 기반으로 동작하고 정적 리소스를 제공한다.
정적 리소스란 정적 HTML, CSS, JS, 이미지, 영상 등을 말한다.
웹 애플리케이션 서버
웹 애플리케이션 서버는 HTTP 기반으로 동작하고 웹 서버 기능에 정적 리소스 제공한다.
즉, 애플리케이션 로직 수행을 한다.
ex) 동적 HTML, 서블릿, JSP, 스프링 MVC
우리가 스프링 부트에서 사용하는 톰캣은 WAS 중 하나로 servlet container라 할 수 있다.
클라이언트가 request할 때, 어떤 servlet을 실행할 것인지 제어한다.
웹 시스템 구성 - WEB, WAS, DB
WAS, DB만으로 시스템 구성이 가능하다. 즉, 위의 사진과 다르게 HTML, CSS, JS, 이미지가 WAS 안에 포함되있는 것이다.
만약에 그렇게 된다면 WAS가 너무 많은 역할을 담당하게 되어 서버 과부하가 일어날 수 있다.
그래서 위의 사진처럼 정적 리소스는 웹 서버가, 애플리케이션 로직은 WAS에서 실행하게 된다.
정적 리소스가 많으면 웹 서버를, 애플리케이션 리소스가 많으면 WAS 증설하면 된다.
클라이언트에서 요청이 들어올 때, 애플리케이션 로직을 수행하기 위해 WAS를 실행한다.
그 때 WAS와 연결을 해주기 위해 TCP/IP를 통해 연결이 되고,
WAS는 쓰레드를 사용하여 적절한 Servlet으로 처리를 해준다.
또한, WAS는 멀티 쓰레드를 지원한다.
해당 멀티 쓰레드는 개별 HTTP 요청에 대해 멀티 쓰레드를 지원해주는 것이다.
대량의 데이터를 나누어 저장하는 작업은 개발자가 직접 멀티쓰레드 처리를 해줘야한다.
서블릿
서블릿이란 자바를 이용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이라 한다.
만약 WAS가 서버를 직접 구현하게 된다면 위와 같은 과정을 모두 개발자가 처리해야한다고 한다.
하지만 서블릿을 지원하는 WAS를 사용하게 된다면 초록색으로 되어있는 부분만 처리하면 된다고 한다.
즉, 해당 URL이 호출되면 서블릿 컨테이너에서 servlet을 실행하여 HTTP request와 response를 편리하게 사용할 수 있께 해준다.
자바 웹 기술
계속해서 모르는 단어들이 나와서(jsp, 서블릿, MVC) 머릿 속에서 정리가 안됐는데, 이 부분을 가르쳐주시면서
뭔가 잘 정리된 느낌이었다.
서블릿 -> JSP -> 서블릿, JSP 조합 MVC -> MVC 프레임워크
Web Servlet -> Spring MVC
Web Reactive -> Spring WebFlux
자바에서 HTML을 편리하게 생성하는 뷰 기능이 있다.
JSP와 타임리프가 있는데 뒤의 강의를 들으면서 계속해서 배울 것이다.
Reference
서블릿 : https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF
출처 : 인프런 스프링 MVC 1편(김영한 강사님)
'Spring 강의 > 스프링 MVC 1' 카테고리의 다른 글
MVC 1 - 구조 이해 (0) | 2021.09.27 |
---|---|
MVC 1 - MVC 프레임워크 만들기 (0) | 2021.09.18 |
MVC 1 - 서블릿, JSP, MVC 패턴 (0) | 2021.09.14 |
MVC 1 - 서블릿 (0) | 2021.09.13 |