섹션 1 스프링 부트 살펴보기
스프링 부트 소개
- 스프링 부트란
- 스프링 기반의 도구 모음
- 실무 환경에 사용 가능한 수준의 독립실행형(stand-alone) 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와준다.
- 스프링 ≠ 스프링 부트
스프링 부트 핵심 목표
- 매우 빠르고 광범위한 영역의 스프링 개발 경험 제공
- 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공
- 프로젝트에서 필요로 하는 다양한 비기능적 기술 제공
- 내장 서버, 보안, 메트릭, 상테 체크, 외부 설정 방식 등
- 코드 생성이나 XML 설정이 필요하지 않음
스프링 부트의 역사
- 2012년 스프링 프레임워크 프로젝트 이슈에 등록된 요청에서 시작
- “Containerless 웹 개발 아키텍처 지원”
Containerless
- Web Component
- Web Client의 요청을 처리하여 Dynamic Content를 응답으로 보내는 역할을 담당
- ex) 회원 가입 컴포넌트
- 이러한 컴포넌트는 Web Container 내부에서 관리된다.
- Web Container
- Web Component를 관리 (라이프사이클 등)
- Web Client의 요청을 알맞은 Web Component에게 라우팅
- 자바에선 Web Component를 Servlet, Web Container를 Servlet Container라 부른다.
- Spring Container
- Servlet Container 뒤에서 동작
- 서블릿을 통해 들어온 요청을 받아 처리한다.
- Spring Bean을 관리
- 기존에 Servlet Container를 띄우려면 XML 파일을 작성하는 등의 매우 번거로운 절차가 필요했다.
- web.xml, deploy, install, port, classloader, logging, …
- 실제 애플리케이션 개발 외에 신경 써야 할 부분이 너무 많았다.
- Servlet Container를 신경쓰지 않고 (Containerless) 개발할 수 없을까?
- 스프링 부트의 main 메서드를 실행하면 기존의 복잡한 절차를 자동으로 실행시킬 수 있다.
Opinionated
스프링 프레임워크의 설계 철학
- 극단적인 유연함 추구
- 다양한 관점 수용
- Not opinionated
- 수많은 선택지를 다 포용
하지만 극단적 유연함으로 인해 개발자가 선택하고 결정해야 할 일도 너무 많았다.
스프링 부트의 설계 철학
- Opinionated - 자기 주장이 강한, 자기 의견을 고집하는, 독선적인
- 정해주는 대로 빠르게 개발하고 고민은 나중에
- 스프링을 잘 활용하는 뛰어난 방법을 제공
사용 기술과 의존 라이브러리 결정
- 아래의 것들을 정해준다.
- 업계에서 검증된 스프링 생태계 프로젝트
- 표준 자바 기술
- 오픈소스 기술 종류와 의존 관계
- 사용 버전
- 각 기술을 스프링에 적용하는 방식(DI)과 디폴트 설정값을 제공
유연한 확장
- 스프링 부트는
- 내장된 대폴트 구성을 커스터마이징 하는 매우 자연스럽고 유연한 방법을 제공
- 스프링을 사용하는 방식을 이해한다면 언제라도 부트를 제거하고 원하는 방식으로 재구성 가능
- 기술과 구성을 간편하게 제공하는 나만의 모듈 작성하게 해줌
스프링 부트의 이해
- 스프링 부트를 이용한 개발 방법
- 부트가 결정한 기술과 구성, 디폴트 설정 수용
- 외부 설정 파일 이용한 설정 변경 방법 활용
- 아주 빠르게 개발 시작 가능
- 스프링 부트를 이용한 개발의 오해와 한계
- 애플리케이션 기능 코드만 잘 작성하면 된다.
- 스프링 몰라도 된다.
- 스프링 부트가 직접 보여주지 않은 것은 몰라도 된다.
- 기술적인 필요가 생기면 검색으로 해결한다.
- 스프링 부트를 이해하게 되면
- 스프링 부트가 어떻게 스프링을 활용하는지 배우고 응용할 수 있다.
- 스프링 부트가 선택한 기술, 구성, 디폴트 설정이 어떤 것인지 확인할 수 있다.
- 필요할 때 부트 기본 구성을 수정하거나 확장 가능하다.
- 나만의 스프링 부트 모듈을 만들어 활용할 수 있다.
프레임워크를 효과적으로 재사용하기 위해선 프레임워크의 최종 모습뿐만 아니라 현재의 모습을 띠게 되기까지 진화한 과정을 살펴 보는 것이 가장 효과적이다. 프레임워크의 진화 과정 속에는 프레임워크의 구성 원리 및 설계 원칙, 재사용 가능한 컨텍스트와 변경 가능성에 관련된 다양한 정보가 들어 있기 때문이다. - 조영호 (프레임워크 3부)