본문 바로가기
SpringBoot/SpringBoot

spring-boot-starter-web

by BAYABA 2021. 9. 10.
  1. 아래 출처를 참고하여 작성하였습니다.
  2. 개인 공부 목적으로 작성하였습니다.

1. spring-boot-starter-web

  1. SpringBoot의 spring-boot-starter-web 모듈에는 embedded tomcat WAS가 포함되어 있습니다.
  2. 기본적으로 SpringBoot에서 사용하는 Apache Tomcat은 Apache Web Server + Tomcat Server로 구성되어 있습니다.
    1. SpringBoot에서는 Apache Web Server + Tomcat Server를 보통 Apache Tomcat이라고 많이 부릅니다.

2. Apache Web Server와 Tomact Server의 연동 Flow

  1. 클라이언트에서 서버의 80번 포트로 동적 자원(ex. 로그인) 요청을 보냅니다.
  2. Apache Web Server에서는 정적 자원 요청이 아니므로 Tomcat Server로 AJP Connector를 이용하여 요청을 전달합니다.
    • 이 때 AJP(Apache JServ Protocol)을 이용하는데 이 프로토콜은 Web Server에서 받은 요청을 WAS로 전달해주는 프로토콜입니다.
    • 해당 프로토콜은 Apache Web Server, Tomcat, JBOSS 등 다양한 WAS에서 지원합니다.
  3. Tomcat Server는 받은 요청을 요청에 맞는 서블릿을 생성하여 처리하고 Web Server에 결과를 돌려줍니다.
    • 서블릿 생성은 SpringBoot의 경우입니다.
  4. Apache Web Server는 Tomcat으로부터 받은 데이터를 다시 클라이언트에게 전달합니다.

3. Web Server와 WAS


3-1. Web Server

  1. 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html, .jpg, .css 등)를 제공하는 서버를 의미합니다.
  2. 즉, Web Server는 서버가 가지고 있는 특정 자원만을 반환하는 역할을 합니다.

3-2. WAS

  1. WAS는 Web Server와 달리 클라이언트로부터 HTTP 요청을 받아 동적인 콘텐츠를 반환하는 서버 역할을 합니다.
    • 여기서 동적인 컨텐츠란 특정 자원이 아닌 다양한 로직, DB 조회 등의 작업이 진행된 후 반환하는 콘텐츠를 의미합니다.

3-3. Web Server, WAS를 같이 사용하는 이유

  1. 가장 일반적인 이유로는 서버의 부하 방지가 있습니다.
  2. WAS는 사용자의 요청을 다양한 로직과 DB 조회를 처리해야 하기 때문에 상당한 컴퓨팅 자원을 소모하게 됩니다. 그렇기 때문에 단순 정적 자원 반환 같은 경우에는 Web Server가 처리하게 하여 부하를 분산시킬 수 있기 때문에 Web Server와 WAS를 같이 사용합니다.
  3. 그 외에도 Web Server를 Load balancer로 사용하고 여러 대의 WAS를 두어 부하를 분산하는 등의 이유가 있습니다.

출처

  1. Spring Boot의 Embedded Tomcat

'SpringBoot > SpringBoot' 카테고리의 다른 글

spring-boot-starter, parent  (0) 2021.09.16