스프링과 스프링 부트
스프링 프레임워크를 알아보고 나서 스프링 부트를 알아봅니다. 그 뒤에는 스프링 프레임워크와 스프링 부트가 어떻게 다른지 알아보겠습니다.
스프링의 등장
엔터프라이즈 애플리케이션이라는 용어가 있습니다. 웹 개발이 처음인 여러분에게는 매우 생소한 용어일 텐데요. 엔터프라이즈 애플리케이션은 대규모의 복잡한 데이터를 관리하는 애플리케이션을 말합니다. 소프트웨어 분야가 발전하며 엔터프라이즈 애플리케이션은 점점 복잡해졌습니다. 예를 들어 은행 시스템을 생각해보면 몇 백만, 아니 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금이나 출금 요청을 하거나 새로운 통장을 개설하기도 합니다. 이렇듯 엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요합니다. 그런데 이런 것들을 신경쓰면서 사이트 기능, 즉, 비즈니스 로직까지 개발하기는 매우 어렵습니다. 누군가 엔터프라이즈 애플리케이션을 위한 개발 환경을 제공해서 기능 개발에만 집중할 수 있다면 얼마나 좋을까요?
이런 상황에서 2003년 6월에 스프링 프레임워크가 짠하고 등장했습니다. 스프링 프레임워크는 앞서 언급한 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구였죠. 덕분에 개발자들은 기능 개발에 집중할 수 있게 되었습니다.
스프링을 더 쉽게 만들어주는 스프링 부트
스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있습니다. 개발팀도 스프 링의 이런 단점을 인식하고 보완하고자 스프링 부트를 출시했습니다(2013년 4월 0.5.0.M6 버전 첫 공개). 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구입니다. 빠르게 스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 사용해 간편하게 의존성을 사용하거나 관리할 수 있습니다. 스프링 부트는 개발자가 조금 더 비즈니스 로직 개발에만 집중할 수 있도록 만들어주는 도구인 것이죠. 스프링과 비교했을 때 스프링 부트의 주요 특징을 다음과 같이 정리할 수 있습니다.
참고로 스프링 부트와 스프링이 다른 도구라고 생각하는 사람들이 있는데요. 스프링 부트는 스프링에 속한 도구입니다. 단, 스프링과 스프링 부트는 개발할 때의 몇 가지 차이점이 있죠. 그 차이점도 조금 짚어보겠습니다.
차이점 1. 구성의 차이
가장 먼저 구성의 차이점이 있습니다. 스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야 합니다. 하지만 스프링 부트는 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드하므로 수동으로 개발 환경을 구성할 필요가 없습니다.
차이점 2. 내장 WAS의 유무
스프링 애플리케이션은 일반적으로 톰캣과 같은 WAS에서 배포됩니다. WAS란 웹 애플리케이션 서버web application server의 약자입니다. 하지만 스프링 부트는 WAS를 자체적으로 가지고 있습니다. 그래서 jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션을 실행할 수 있습니다. 참고로 스프링 부트의 내장 WAS에는 톰캣, 제티, 언더토우가 있어서 상황에 필요한 WAS를 선택할 수도 있습니다. 그 외의 차이점을 표로 정리하겠습니다. 공부를 시작하기 전에 간단히 읽어보고 넘어가기 바랍니다.
