cs log

Spring Boot 편의 기능 정리 (1) - 내장 웹서버

· cs

Spring Boot?

  • 기존 스프링 프레임워크에서 애플리케이션 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결
  • Spring Boot란 Spring Framework를 편하게 사용할 수 있도록 여러 기능을 제공해주는 일종의 tool이다.

Spring Boot의 주요기능은 다음과 같다.

Spring Boot의 주요 기능

  1. WAS : tomcat 같은 웹 서버를 내장해서 별도의 웹서버를 설치하지 않아도 된다.
  2. 라이브러리 관리 기능: starter 종속성을 제공해주어, 라이브러리 버전간 충돌이 발생하지 않게 빌드 구성을 해준다.

예를 들면 spring-boot-start-{library} 형식으로 web, data-jpa 와 관련된 모든 라이브러리를 같이 떙겨줄 수 있다.

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
}
  1. 자동구성(Auto-Configuration) : project 시작에 필요한 spring bean을 자동 등록해준다.
  2. 외부설정 : 환경에 따라 달라져야 하는 외부 설정을 공통화하여 관리할 수 있다.
  3. 프로덕션 준비 기능(일종의 애플리케이션 모니터링 지원): 모니터링을 위한 메트릭, 시스템 상태를 확인할 수 있는 기능을 추가로 제공해준다.
[0]Spring Boot Starter Dependencies

Spring Boot 도입 이전의 WAR 배포 방식

먼저 기존에 사용되던 방식은 Application 을 WAR로 빌드하고, 빌드한 WAR를 톰캣서버의 /webapps/ROOT.war 파일명으로 복사해서 집어넣어서 실행시키는 방식이다.

위 application 코드를 WAR 형태로 빌드한다. 참고로 WAR 형태는 다음과 같은 구조를 가지고 있다.

WEB-INF
    classes : 실행 클래스 모음
    lib : 라이브러리 모음
    web.xml 
index.html : 정적리소스

WAR 배포 방식의 단점

위와 같이 웹 어플리케이션 빌드 파일인 WAR 와 WAS가 분리되어 있는 구조에서는 다음과 같은 단점이 있다.

  1. WAS 별도 설치
  2. WAS-WAR간의 연동 설정 필요
  3. 배포 과정의 복잡성, 즉 WAR에서 요구하는 파일 디렉토리 스펙대로 WAR파일을 배치시켜야 한다.

Spring Boot의 내장 WAS 방식

반면 Spring Boot의 경우 내장 톰캣을 포함한다. application을 jar로 빌드하면, jar 안에 tomcat과 같은 WAS library가 포함되어 있다. 즉 jar파일만 실행하면, WAS도 같이 실행되는 구조이다.

Reference

[0] https://www.inflearn.com/roadmaps/373