스프링 부트(Spring Boot)란?
- 스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립 실행형 애플리케이션을 복잡한 고민없이 빠르게 작성할 수 있게 도와주는 여러가지 도구 모음이다.
- 알아서 결정해준다.
- 스프링과 스프링 부트는 다르다.
- 애플리케이션을 만들 수 있도록 도와주는 기술이다.
- 예전의 엔터프라이즈 애플리케이션은 web appliction archive 라는 와? 파일 같은 형태로 패키징해서 서버에 배포한다.
- 그 위에서 동작시키는 방식으로 사용했다.
- 그런데 스프링 부트는 .java, .jar? 를 이용해서 애플리케이션 전체를 바로 실행 가능하다.
스프링 부트(Spring Boot) 목표
- 빠르고 광범위한 영역의 스프링 개발 경험을 제공한다.
- 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하고 필요에 따라원하는 방식으로 손쉽게 변형 가능하다.
- 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 매트릭, 상태 체크, 외부 설정 방식 등)
- 코드 생성이나 XML 설정을 필요로하지 않는다. XML 이 없는 스프링 개발을 목표로 하고 있다. (기존에는 xml 파일에 설정하는 과정이 필요했다.)
스프링 부트(Spring Boot) 역사
- POJO라고 불리는 단순화 작업 오브젝트와 그에 결합된 다양한 서비스들을 이용해서 손쉽게 개발이 가능하다.
Containerless(컨테이너리스 웹 애플리케이션 아키텍처)
- 스프링 부트는 컨테이너리스 웹 애플리케이션 아키텍처를 스프링이 지원해주기를 바라는 어떤 개발자의 생각으로 시작됐다.
- serverless: 서버에 대한 설치, 관리를 신경쓰지 않고 애플리케이션 개발 가능하다.
- containerless는? serverless와 유사하다.
- 컨테이너는?
- 웹 컴포넌트는 웹 컨테이너 안에 항상 들어가 있어야한다. 웹 컨테이너는 여러 개의 웹 컴포넌트를 관리해준다. 라이프사이클 관리
- 웹 컨테이너는 클라이언트로부터 들어온 웹 요청을 어느 컴포넌트가 처리할지 연결해주는 작업도 한다.
- 결정 작업을 "라우팅(핸들러 매핑)"
- Java 에서는 웹 컴포넌트를 "Servlet"이라고 부른다. 웹 컨테이너는 "Servlet Container" (톰캣이 가장 유명)
- 서블릿 컨테이너: ex) Tomcat
- 스프링 컨테이너는 서블릿 컨테이너 뒤에 존재하면서 Bean들을 관리한다.
- 스프링 컨테이너는 서블릿 컨테이너를 통해서 웹으로 들어온 요청을 받고 어느 Bean 이 작업을 처리할지 정해준다.
- 스프링 컨테이너가 서블릿 컨테이너를 대체할 수 있을까?
- NO, 대체 불가능
- 예전에는 web.xml이라는 파일을 등록해야만 서블릿 컨테이너가 뜨고 이를 통해 스프링 컨테이너가 호출됐다. dispatch servlet 설정, 서블릿 매핑은 어디에 하고.. 등등
- 그러나 이 파일은 스프링 프로젝트를 처음 셋업할 때만 필요하고 개발 중에는 필요없다.
- 서블릿 컨테이너 는 완전히 독립적인 서버 프로그램이다. war로 압축된 servlet appplication을 배포하는 작업을 해야한다.
- 서블릿 컨테이너는 표준 스펙이며 이를 구현한 제품(ex) Tomcat)이 있다.
- 굉장한 진입 장벽이자 공부해봐야 크게 유용하지 않다. (초기 세팅시에만 필요)
- 컨테이너 리스 적용시킨다.
독립 실행형 애플리케이션(standalone application)
- 스프링 부트를 이용하여 main() 메서드만 실행하면 전체가 다 동작하게끔 개발할 수 있다.
- <=> 엔터프라이즈 애플리케이션: 웹 기반이다.
스프링 부트의 설계 철학
- opinionated - 자기 주장이 강한
- 일단 빠르게 개발하고 나서 고민은 나중에
- 스프링을 잘 활용하는 방법을 제공
- 업계에서 검증된 스프링 생테계 프로젝트, 표준 자바 기술, 오픈 소스 기술의 종류와 의존 관계, 사용 버전을 정해준다.
- DI 방식과 디폴트 설정값을 제공한다.
- 스프링 부트에 내장된 디폴트 구성을 커스터마이징하는 매우 자연스럽고 유연한 방법을 제공한다.
- 스프링 부트처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 작성
'Spring Framework > 토비의 스프링' 카테고리의 다른 글
Chapter 04. 독립 실행형 스프링 애플리케이션 (0) | 2023.06.24 |
---|---|
Chapter 03. 독립 실행형 서블릿 애플리케이션 (0) | 2023.06.20 |
Chapter 02. 스프링 부트 시작하기 (0) | 2023.06.18 |
Chapter 01. Object와 의존 관계 (2) | 2023.03.19 |
머릿말 (0) | 2023.03.18 |