스프링 생태계
스프링은 여러 가지 기술의 모음이라고 할 수 있다. 먼저 스프링의 가장 핵심이 되는 스프링 프레임워크와 여러 스프링 기술을 편리하게 사용할 수 있도록 도와주는 스프링 부트 등이 있다.
스프링 데이터는 MongoDB, SQL, REDIS 등 데이터베이스의 기본적인 CRUD는 다 비슷하다. 이러한 것들을 편리하게 사용하도록 도와주는 기술이다. 스프링 세션은 세션 기능을 편리하게 사용하도록 도와주고 시큐리티는 보안과 관련된 부분, RestDocs는 API 문서와 테스트를 엮어 문서화를 편리하게 해주는 것, 스프링 배치는 배치 처리에 특화된 기술이고 클라우드는 최근 클라우드에 특화된 기술이다.

https://spring.io/projects
제일 중요한 핵심은 스프링 프레임워크이고 이 모든 기술을 편리하게 사용하도록 도와주는 것이 스프링 부트이다.
스프링 프레임워크
- 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술: 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합: 캐시, 이메일, 원격접근, 스케줄링
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
- 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용
이 강의에서 초첨을 맞춘 건 스프링 프레임워크 중에서도 핵심 기술이다. 나머지는 파생된 것이라고 보면 된다.
스프링 부트
- 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 스프링과 3rd party(외부) 라이브러리 자동 구성
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- 관례에 의한 간결한 설정