Spring Boot - 1. 스프링 부트의 핵심 기능

Back-End/Spring Boot 2023.11.09 댓글 류라쿤

 

최근에 솔루션 업체에서 Spring 기반으로 개발을 했는데, 해당 회사는 Spring Framework만 다루다보니 Spring Boot에 대해서는 다루기 쉽지 않아서 개인적으로 공부를 시작했다.

그래서 오늘은 스프링 부트에 대해 알아보는 첫 기록으로, 스프링 부트가 가지고 있는 핵심 기능이 무엇인지, 핵심 기능이 담고있는 내용은 무엇인지에 대해 간략히 정리하는 포스팅을 해보겠다.

 

스프링 부트의 핵심 기능

1) 의존성 관리 간소화
2) 배포 간소화
3) 자동 설정


1. 의존성 관리 간소화 - 스타터

"스프링 부트의 특별한 점은 의존성을 수월하게 관리 한다는 것이다."

보통 소프트웨어 개발을 하면서 어려움을 겪는 부분 중 하나가 의존성 관리인데, 한 특정 버전의 의존성은 다른 의존성의 어떠한 특정 버전에서만 테스트(혹은 동작) 되었을 가능성이 있다. 그로 인해 특정 버전들에서만 테스트된 의존성을 함께 사용할 때 의존성 꼬임이라는 문제가 발생할 수 있다.

스프링 부트와 스타터는 이런 어려움을 해결하기 위해 등장했다. 스프링 부트 스타터는 거의 매번 동일한 방식으로 특정 기능을 제공한다는 입증된 전제를 바탕으로 제작된 BOM(Bills of Materials)이다.

BOM은 프로젝트 아티팩트(라이브러리 등의 구성 요소)의 정보, 버전, 의존성 관리를 포함한 특수한 POM인데, 여기서 POM은 빌드 도구에서 의존성을 가져오고 프로젝트 빌드에 사용하는 정보와 프로젝트 구성이 담긴 파일이다.

예를 들어 spring-boot-starter-web 같은 단일 스타터를 추가하면 단일 애플리케이션에 필요한 기능을 모두 제공하고, 단일 스타터에 포함된 여러 의존성 안에 들어 있는 각 의존성 내의 여러 라이브러리 버전이 모든 의존성에 맞게 동기화된다는 것이다.


2. 배포 간소화 - 실행 가능한 JAR

"스프링 부트는 번거로운 배포 프로세스의 많은 부분을 간소화했다."

과거 애플리케이션 서버에 자바 애플리케이션을 배포하는 과정은 복잡했다. 하지만 스프링 부트는 모든 의존성이 포함된 단일 스프링 부트 JAR를 배포하고, 스프링 부트 플러그인이 모든 의존성을 결과 JAR에 압축한다. 즉 바로 실행 가능한 JAR가 생성되어 원하는 기능을 실행해준다는 것이다.

또한 JAR가 있으면 JVM(Java Virtual Machine)이 있는 환경에서 Java -jar 파일명.jar 와 같은 간단한 명령만으로도 애플리케이션을 실행할 수 있다.


3. 자동 설정

"자동 설정은 스프링 부트 개발자의 생산성을 향상시키는 강력한 도구이다."

스프링 부트는 널리 사용되고 반복되는 사용 사례에서 의견(스프링 개발팀이 제공하는 자동 설정이나 기본값)을 제시해 생산성을 향상시킨다.

소프트웨어 개발에서는 특정 패턴이 80~90% 정도로 자주 반복되는데, 스프링 부트는 이렇게 자주 반복되는 패턴에 대한 의견을 개발자에게 제시하고, 개발자는 이런 의견을 통해 특정 작업에서 작성해야 할 코드를 간소화하여 생산성을 향상시킬 수 있다.

또한 일반적인 범주에 들지 않고, 드물지만 유용한 10~20%의 범주에 속하는 사례의 경우에도 특정 의견의 오버라이딩을 통해 필요할 때는 자동 설정을 오버라이딩 할 수 있다. 즉, 드물지만 필요할 때는 이런 자동 설정 작업을 매우 쉽게 할 수 있다는 것이다.


마치며

1. 스프링 부트의 세 가지 핵심 기능은 아래와 같다.
- 의존성 관리 간소화
- 배포 간소화
- 자동 설정


2. 위의 세 가지 기능은 모두 커스터마이징이 가능하지만, 크게 필요치는 않다.

3. 이런 스프링 부트의 세 기능은 개발자가 더 생산적이고 편하게 개발할 수 있도록 작동한다.

댓글