스프링 부트란

  • 스프링 기반으로 실무 환경에 사용 가능한 독립 실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구 모음

스프링 부트 목표

  • 빠르고 광범위한 영역의 스프링 개발 경험 제공
  • 강한 주장 가지고 즉시 적용 가능한 기술 조합 제공하면서, 필요에 따라 원하는 방식으로 쉽게 커스텀 가능
  • 프로젝트에서 필요로 하는 다양한 비기능적 기술(내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등) 제공
  • 코드 생성이나 XML 설정을 필요로 하지 않음

간단한 역사


컨테이너리스 개발

  • “컨테이너 없는” 웹 애플리케이션 아키텍처란?
    • 컨테이너 관리에 신경쓰지 말고 개발에 더 집중하자는 의미
  • 과거에는 서블릿 컨테이너를 위해 web.xml 같이 처음에만 설정하고 이후에는 볼 일이 없는 파일을 항상 셋업 해줘야 했음 스프링 애플리케이션 개발에 요구되는 서블릿 컨테이너의 설치, WAR 폴더 구조, web.xml, WAR 빌드, 컨테이너로 배치, 포트 설정, 클래스로더, 로깅 등과 같은 필요하지만 애플리케이션 개발의 핵심이 아닌 단순 반복 작업을 제거해주는 개발 도구와 아키텍처 지원!

설치된 컨테이너로 배포하지 않고 독립실행형(standalone) 자바 애플리케이션으로 동작


강한 주장 가진(optionated) 도구

다 정해져있으니 개발(비즈니스로직)만 하세요

  • 스프링 프레임워크의 설계 철학
    • 극단적 유연함 추구
    • 다양한 관점 수용
    • Not opinionated
    • 수많은 선택지 다 포용
    • 하지만…이런 유연함으로 인해 개발전에 고려할게 너무 많다
  • 스프링 부트의 설계 철학
    • Opinionated - 자기 주장 강한, 자기 의견 고집하는, 독선적인
    • 일단 정해주는 대로 빠르게 개발하고 고민은 나중에
    • 스프링을 잘 활용하는 뛰어난 방법 제공
      • 검증된 스프링 생태계 프로젝트, 표준 자바 기술 등의 종류와 의존관계, 라이브러리 구성, 버전등을 미리 검증해서 정해줌
      • 각 기술을 스프링에 적용하는 방식(DI구성)과 디폴트 설정값 제공
  • 스프링 버전, 스프링의 다양한 서브 프로젝트, 표준 자바 기술, 오픈소스 라이브러리 등의 의존 관계 확인, 버전 호환성 체크하는건 매우 귀찮고 어려움
  • 스프링 부트는 매 버전마다 사용할 기술 종류를 선정만 해도 사전 검증된 추천 기술, 라이브러리 구성, 의존 관계, 적용 버전, 각 라이브러리 세부 구성과 디폴트 설정 제공
  • 유연한 확장
    • 원한다면 이런 디폴트에 의존하지 않고 제시된 구성을 오버라이드, 재구성이 가능
    • 스프링 부트가 스프링을 사용하는 방식 이해한다면 언제라도 스프링 부트를 제고하고 원하는 방식으로 재구성 가능
    • 스프링 부트처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 작성 가능

스프링 부트 이해

  • 스프링 부트 이용한 개발의 오해와 한계
    • 애플리케이션 기능 코드만 잘 작성하면 된다
    • 스프링 몰라도 된다
    • 스프링 부트가 직접적으로 보여주지 않는 것은 몰라도 된다
    • 뭔가 기술적인 필요가 생기면 그때 검색해서 해결한다
  • 스프링 부트를 이해하게 되면
    • 부트가 스프링의 기술을 어떻게 활용하는지 배우고 응용 가능
    • 부트가 선택한 기술, 자동으로 만들어주는 구성, 디폴트 설정이 어떤건지 확인할 수 있다.
  • 부트가 제공하는 기술 조합으로 빠르게 개발 착수 가능
  • 하지만, 부트가 어떻게, 무엇을 제공하는지 모르면 작은 기술적요구 변화에도 당황하게되고 시스템의 발전에 따른 다양한 요구를 수용하기 힘들어짐
  • 스프링 부트 이해 == 스프링 부트가 제안하는 스프링 사용 방법을 이해
    • 스프링 부트를 스프링을 사용하는 애플리케이션 개발을 위한 하나의 프레임워크라 접근 가능!

프레임워크를 효과적으로 재사용하기 위해서는 프레임워크의 최종 모습뿐만 아니라 현재의 모습을 띠게 되기까지 진화한 과정을 살펴보는것이 효과적. 진화 과정 속에는 프레임워크의 구성 원리 및 설계 원칙, 재사용 가능한 컨텍스트와 변경 가능성에 관련된 다양한 정보 들어있기 때문

조영호 (프레임워크 3부) http://aeternum.egloos.com/2640343