[Spring] 스프링과 스프링 부트

2024. 8. 10. 21:08프레임워크(Framework)/Spring

1. 스프링의 등장

엔터프라이즈 애플리케이션은 대규모의 복잡한 데이터를 관리하는 애플리케이션을 말한다. 소프트웨어 분야가 발전하며 엔터프라이즈 애플리케이션은 점점 복잡해졌다. 예를 들어 은행 시스템을 생각해보면 몇 백만, 아니 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금이나 출금 요청을 하거나 새로운 통장을 개설하기도 한다. 이렇듯 엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요하다. 그런데 이런 것들을 신경쓰면서 사이트 기능, 즉, 비즈니스 로직까지 개발하기는 매우 어렵다. 누군가 엔터프라이즈 애플리케이션을 위한 개발 환경을 제공해서 기능 개발에만 집중할 수 있다면 얼마나 좋을까?

 

이런 상황에서 2003년 6월에 스프링 프레임워크가 등장했다. 스프링 프레임워크는 앞서 언급한 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구이다. 덕분에 개발자들은 기능 개발에 집중할 수 있게 되었다.


2. 스프링을 더 쉽게 만들어주는 스프링 부트

스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있다. 그래서 개발팀에서도 이런 단점을 인식하고 단점을 보완하고자 스프링 부트를 출시했다(2013년 4월). 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구이다. 빠르게 스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 사용해 간편하게 의존성을 사용하거나 관리할 수 있다. 스프링 부트는 개발자가 조금 더 비즈니스 로직 개발에만 집중할 수 있도록 만들어주는 도구인 것이다. 스프링과 비교했을 때 스프링 부트의 주요 특징은 다음과 같다.

스프링 부트의 주요 특징
- 톰캣, 제티, 언더토우 같은 웹 애플리케이션 서버(web application server, WAS)가 내장되어 있어서 따로 설치를 하지 않아도 독립적으로 실행할 수 있다.
- 빌드 구성을 단순화하는 스프링 부트 스타터를 제공한다.
- XML 설정을 하지 않고 자바 코드로 모두 작성할 수 있다.
- JAR을 이용해서 자바 옵션만으로는 배포가 가능하다.
- 애플리케이션의 모니터링 및 관리 도구인 스프링 액츄에이터(spring actuator)를 제공한다.

 

참고로 스프링 부트와 스프링이 다른 도구라고 생각하는 사람들이 있다. 스프링 부트는 스프링에 속한 도구이다. 단, 스프링과 스프링 부트는 개발할 때의 몇 가지 차이점이 있다. 그 차이점은 다음과 같다.

 

차이점1. 구성의 차이

스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야 한다. 하지만 스프링 부트는 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드하므로 수동으로 개발 환경을 구성할 필요가 없다.

 

차이점2. 내장 WAS의 유무

스프링 애플리케이션은 일반적으로 톰캣과 같은 WAS에서 배포된다. WAS란 간단히 웹 애플리케이션을 실행하기 위한 장치를 말한다. 하지만 스프링 부트는 WAS를 자체적으로 가지고 있다. 그래서 jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션을 실행할 수 있다. 참고로 스프링 부트의 내장 WAS에는 톰캣, 제티, 언더토우가 있어서 상황에 필요한 WAS를 선택할 수도 있다.

 

 

스프링과 스프링 부트 특징 비교

  스프링 스프링 부트
목적 엔터프라이즈 애플리케이션 개발을 더 쉽게 만들기 스프링의 개발을 더 빠르고 쉽게 하기
설정 파일 개발자가 수동으로 구성 자동 구성
XML 일부 파일은 XML로 직접 생성하고 관리 사용하지 않음
인메모리 데이터베이스 지원 지원하지 않음 인메모리 데이터베이스 자동 설정 지원
서버 프로젝트를 띄우는 서버(예: 톰캣, 제티)를 별도로 수동 설정 내장형 서버를 제공해 별도의 설정이 필요 없음

 

 


출처 | 스프링 부트 3 백엔드 개발자 되기(자바 편)