항상 스프링 이야기에 따라 붙는 스프링 부트란 무엇일까요?
오늘은 스프링 부트(Spring Boot)에 대해서 정리해보았습니다.
1. 스프링 부트(Spring Boot)란?
"Spring Boot helps you to create stand-alone, production-grade Spring-based applications that you can 'just run'."
"스프링 부트는 당신이 독립적이며 생산적인 수준의 스프링 기반 애플리케이션을 만들 수 있도록 도와줍니다. 당신은 "그저 실행"만 하세요"
스프링 부트 래퍼런스에서 스프링 부트 소개글에 제일 앞에 써있는 문장입니다.
좀 더 의미가 와닿게 의역을 더했지만, 어쨌든 저 한문장이 스프링 부트를 가장 잘 표현하는 문장이라 생각합니다.
스프링 부트가 생겨난 목적 자체가 개발자가 스프링을 좀 더 쉽게 다루기 위해서입니다.
스프링 아키택처는 점점 추가되는 기능으로 인해 복잡해졌고, 개발자들이 새로운 스프링 프로젝트를 만들 때마다 길고 복잡한 과정을 거쳐야 했습니다. 또한 스프링 프레임워크를 통해 애플리케이션을 생성할 때 수동으로 적용해야 하는 유사한 구성이 많아 반복 작업이 많아졌으며, 호환되는 버전도 개발자가 직접 선택해야 했습니다. 개발자들에게 이러한 과정들은 스프링의 장벽을 높이는 일이었고 스프링사는 이를 해결하기 위해서 스프링 부트가 고안되었습니다.
즉, 스프링 부트는 스프링을 좀 더 쉽게 사용하기 위한 도구 또는 이니셜라이저인 셈입니다.
스프링 프레임워크는 다양한 기능 제공에 중점을 두는데 이때 생겨나는 복잡함을 스프링 부트가 코드의 길이를 줄이고, 간단하게 빌드하는 등 다양한 방법을 통해 해결합니다.
2. 스프링 부트의 특징
- Create stand-alone Spring applications
단독 실행 가능한 스프링 애플리케이션을 생성합니다 - Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
Tomcat, Jetty, Undertow를 내장하고 있습니다. (WAR 파일을 따로 배포할 필요가 없습니다) - Provide opinionated 'starter' dependencies to simplify your build configuration
독자적인 '스타터'를 통해서 당신의 빌드 환경설정을 간소화시킵니다. - Automatically configure Spring and 3rd party libraries whenever possible
가능할 때마다 스프링과 외부(타사) 라이브러리를 자동으로 설정해줍니다. - Provide production-ready features such as metrics, health checks, and externalized configuration
통계 분석, 상태 체크, 외부 설정과 같은 생산성 기능을 제공합니다. - Absolutely no code generation and no requirement for XML configuration
코드 생성 또는 XML 코드 설정 필요 없습니다.
스프링 부트 래퍼런스에서 말하는 스프링 부트의 특징입니다.
특징들을 종합해보면 결국 스프링 부트의 가장 주된 특징은 자동 설정(자동화)입니다.
기존에 개발자가 직접 설정하고 관리해야했던 부분들을 스프링 부트가 설정을 자동화하고, 라이브러리 버전을 자동화하고, 라이브러리 관리를 자동화하고, 내장 서버를 통해 자동으로 서버를 구동하며, 반복되는 특정 코드들을 자동으로 처리해줍니다. 그로 인해 개발자들은 스프링의 다양한 기능을 손쉽게 사용할 수 있으면서 개발 자체에 집중할 수 있게 되는 것입니다.
3. 정리 : 스프링과 스프링부트 차이점
스프링 프레임워크 | 스프링 부트 프레임워크 | |
가장 주된 특성 | 의존성 주입(DI) | 자동설정(AutoConfiguration) |
서버 | 서버 설치 필요 | 내장 서버 제공(Tomcat, Jetty 등) |
반복 코드(boilerplate code) | 개발자들이 다룰 상황 있음 | 프레임워크 차원에서 제거 |
인메모리 데이터베이스 | 제공하지 않음 | 제공함 |
xml file 작성 | 개발자들이 작성 필요 | 개발자들이 작성 안함 |
굳이 차이점?이라기 보단 스프링 부트 프레임워크를 정리한 내용에 가깝습니다.
오늘의 내용을 정리해보자면,
스프링은 다양한 기능이 탑재되면서 점차 복잡해지는데, 이때 생겨나는 복잡함은 개발자가 스프링 프레임워크 사용하기 어렵게 만드므로 이를 해결하기 위해 스프링 부트가 생겨났습니다. 스프링 부트의 자동화 기능을 통해서 개발자들이 스프링의 다양한 기능들을 손쉽게 사용할 수 있고 개발 그 자체에만 집중할 수 있게끔 만들어주었습니다. 그러므로 스프링 부트를 한마디로 정리하자면 스프링을 편리하게 사용할 수 있는 도구 또는 이니셜라이저라 생각할 수 있겠습니다.