SpringBoot 란?
SpringBoot란 Spring을 더 쉽게 이용하기 위한 도구라고 생각하면 쉽다.
Spring은 다양한 기능을 제공해주지만, 그만큼 기존의 개발자들은 Spring을 사용하기 위해서는 일일히 모든 설정을 작성해줘야 하는 불편함이 있었다. 실행환경과 의존성 관리 등 인프라 관련된 관리를 직접 해주었는데, SpringBoot는 이와 같은 설정들을 쉽게 사용할 수 있도록 미리 설정했다. 그렇기에 개발자들은 더욱 코드 개발에 집중할 수 있게 되었고, 지금 날 까지 널리 이용되고 있는 것이다.
간단하게 구조로 표현하자면 아래와 같은 그림이라고 생각하면 된다.
특징
Spring과 구분되는 SpringBoot의 특징은 다음과 같다.
- 의존성 관리
- 자동 설정
- 내장 WAS
- 모니터링
의존성관리
Spring은 개발에 필요한 각 모듈의 의존성을 직접 설정해줘야 했다. 또한 호환되는 버전을 명시해야 정상 작동이 되었기에 호환 가능한 버전까지 신경써줘야 하는 불편함이 있었다.
하지만, SpringBoot는 'spring-boot-starter' 라는 의존성을 제공해주었고, 해당 의존성은 각 라이브러리의 기능과 관련해서 자주 사용되고 정상적으로 호환되는 버전의 모듈 조합을 제공해주어, 개발자는 라이브러리 호환 문제에 신경쓰지 않게 되었다.
자동 설정
SpringBoot는 Spring Framework의 기능을 사용하기 위한 자동 설정 (Auto Configuration) 을 지원하는데, 해당 기능은 애플리케이션에 추가된 라이브러리를 실행하는데 필요한 환경 설정을 찾아주는 것이다.
다시 말하면, 개발에 필요한 의존성을 추가해주면 프레임워크에서 자동으로 관리해주는 것이다.
내장 WAS
SpringBoot의 각 웹 애플리케이션에는 내장 WAS (Web Application Server)가 존재한다. 의존성 중 하나인 'spring-boot-starter-web' 의 경우 Tomcat을 내장하고 있으며, 별다른 설정 없이도 Tomcat 서버를 실행하여 사용할 수 있다.
모니터링
모든 개발이 종료되고 난 후, 운영하는 시기에 해당 시스템이 사용하는 스레드, 메모리, 세션등의 요소들을 모니터링 하는데, SpringBoot에는 Spring Boot Actuator 라는 자체 모니터링 도구가 있어 쉽게 모니터링이 가능하다.
정리
SpringBoot를 사용하는 이유는 ?
앞서 정의에서도 설명했지만, 다시 정리하자면 이유는 다음과 같다.
Spring Framework 를 사용하기 위해서 필수 설정 파일 (web.xml, rootContext.xml, ServletContext.xml ..) 을 작성해줘야 하고, 이를 모두 외우고 작성해주는 것은 사실상 불가능하고, 가능하다고 해도 아주 비효율적인 일이다. 그렇기에 기존의 개발자들은 사용 설정을 복붙하거나 검색을 통해 설정을 해줬어야 했다.
-> 이러한 행동은 곧 생산성이 떨어지게 되고, 비용문제로 발생하게 된다.
이러한 문제를 해결해주기 위한 Springboot를 사용하는 것이다.