** 해당 게시글은 인프런 김영한님의 [스프링 부트 - 핵심 원리와 활용] 강의를 듣고 작성된 게시글입니다.
이전 회사에서 계속 스프링만 사용하다가, 스프링부트를 다 까먹은 듯한 느낌이 들어, 처음부터 차근차근 다시 배워보기로 하였다.
스프링 부트의 핵심 기능
- 내장 서버
: 톰캣과 같은 별도의 서버를 설치하지 않고 웹 어플리케이션을 개발, 배포할 수 있다.
- 자동 라이브러리 관리
: 수많은 라이브러리를 자동으로 선택해 주고 관리해 준다.
- 자동 구성 (Auto Configuration)
: 복잡한 스프링 설정을 자동화해, 쉽고 빠른 개발을 도와준다.
- 외부 설정
- 모니터링과 관리 기능
우선 스프링에 대해 알아보자! 스프링의 기능과 장점은?
- DI컨테이너, MVC, DB접근 기술 등 수 많은 기능을 제공하고 다양한 문제를 해결
- 다양한 라이브러리를 편리하게 사용할 수 있도록 통합
- 자바 개발의 생산성이 높아짐
스프링이 이렇게 편리하기 때문에, 스프링 프레임워크의 확대가 일어난다.
그 여파로...?
- 스프링과 그 생태계가 점점 커짐
- 스프링의 기능도 점점 많아짐
- 다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야 함
- 스프링으로 프로젝트를 시작할 때 필요한 설정이 점점 늘어남
- 스프링으로 프로젝트를 시작하는 것이 점점 어려워짐
- 시작도 하기 전에 복잡한 설정 때문에 포기하게 됨
- 스프링 설정 지옥!!!
이 지옥을 해결하기 위해! 스프링 부트가 등장한다.
스프링 부트란?
- BOOT, 부팅
- 최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미
- 어떤 일을 시작하기 위해 필요한 모든 준비를 마친다는 의미
- 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결
- 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작할 수 있다
- 스프링을 편리하게 사용할 수 있도록 지원
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- 관례에 의한 간결한 설정
스프링 부트 - 핵심 기능 5가지
- WAS : Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 라이브러리 관리
: 손쉬운 빌드 구성을 위한 스타터 종속성 제공, 스프링과 외부 라이브러리의 버전을 자동으로 관리
- 자동 구성
: 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동 등록
- 외부 설정
: 환경에 따라 달라져야 하는 외부 설정 공통화
- 프로덕션 준비
: 모니터링을 위한 메트릭, 시스템의 상태 확인 기능 제공
그럼 스프링과 스프링 부트는?!
- 스프링 부트는 스프링 프레임워크를 쉽게 사용할 수 있게 도와주는 도구일 뿐이다!
- "본질"은 스프링
- 하지만 스프링 부트가 제공하는 편의 기능이 막강하기 때문에 스프링 부트 사용은 요즘 필수이다!
스프링 부트를 배워야 하는 이유?
- 스프링 부트는 편리하지만, 너무 많은 것을 자동화
하지만, 문제가 생겼을 때 자동화 되는 부분이 많다 보면 어느 부분이 문제인지 알 수 없을 수가 있다.
- 최소한 스프링 부트가 어떤 원리로 작동하는지 알아두어야 한다.
- 그래야 문제가 발생했을 때 해결이 가능하다.
- 스프링 부트는 수많은 편의 기능들을 제공한다!
예를 들어 외부 설정이나, 액츄에이터를 통한 모니터링 관리 기능
- 고로, 개발 시간이 단축된다.