더보기
Spring Boot & Thymeleaf 시리즈는 김영한 님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다.
마크다운 형식으로 작성한 글을 블로그에 다시 올리는 거라 가독성이 많이 떨어집니다. 조금더 편하게 보시려면 아래의 Github repository에서 보시면 됩니다.
Web Server와 Web Application Server
Web Server
WAS(Web Application Server)
- 웹 서버의 기능(대표적으로 정적 리소스를 제공하는 기능)을 대부분 포함하고 있다
- 거기에 더해 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있다
- HTTP 요청에 대해 동적으로 동작할 수 있다
- 동적 HTML 파일을 생성 가능하다
- HTTP API(또는 RESTful API)가 WAS를 통해 제공된다
- 서블릿, JSP, 스프링 MVC가 WAS에서 동작한다
Web Server와 WAS의 차이
- 웹 서버는 주로 정적 리소스(파일)을 제공한다.
- WAS는 웹 서버의 기능에 더해 애플리케이션 로직을 수행할 수 있다.
그런데 ....
- 사실은 둘의 경계가 모호하다!
- 웹 서버가 프로그램을 실행하는 기능을 포함하는 경우도 있다
- WAS도 웹 서버의 기능을 제공한다
- Java의 경우,
- 서블릿 컨테이너 기능을 제공하면 WAS라고 한다
- 그런데 사실 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 존재한다
따라서 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있는 것이라고 보면 된다!
실무에서 웹 서버와 WAS를 사용하는 방식들
1. WAS와 DB만으로 구성
- WAS가 애플리케이션 로직을 수행할 수 있기 때문에 WAS에게 대부분의 일을 맡길 수 있다.
- WAS가 너무 많은 일을 담당해서 과부하 우려가 있다.
- WAS 장애 시 오류 화면 같은 정적 페이지도 노출 시킬 수 없게 된다.
- 정적 리소스를 제공하다가 상대적으로 비싼 애플리케이션 로직 실행에 어려움이 생길 수 있다.
- 실제 비즈니스에 핵심이 되는 비즈니스 로직 실행은 돈과 직결되어 있다.
- 그런데 이미지, 글 같은 단순한 정적 리소스를 제공하는 일 때문에 비즈니스 로직 실행에 지연이 생긴다거나 하면? 절대로 안된다!
- 그리고 비즈니스 로직 수행은 상대적으로 더 많은 자원(DB 접근, 복잡한 알고리즘 수행 등)을 필요로 한다.
- 정적 리소스 제공은 그냥 파일 하나 보내주면 끝난다.
2.Web server, WAS, DB로 구성
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 6. 서블릿 등록과 사용(Spring Boot 환경) (0) | 2022.11.23 |
---|---|
[Spring MVC] 5. Java 진영 Web 기술의 역사 (0) | 2022.11.23 |
[Spring MVC] 4. HTML, HTTP, API, CSR, SSR (1) | 2022.11.23 |
[Spring MVC] 3. Servlet Container와 멀티 쓰레드 (0) | 2022.11.23 |
[Spring MVC] 2. Servlet (0) | 2022.11.23 |
댓글