관리 메뉴

나구리의 개발공부기록

스프링 부트 소개, 스프링 프레임워크의 등장, 스프링 부트의 등장 본문

인프런 - 스프링 완전정복 코스 로드맵/스프링 부트 - 핵심 원리와 활용

스프링 부트 소개, 스프링 프레임워크의 등장, 스프링 부트의 등장

소소한나구리 2024. 11. 17. 19:02

출처 : 인프런 - 스프링 부트 - 핵심 원리와 활용(유료) / 김영한님  
유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용


1. 스프링 프레임워크의 등장

  • https://nagul2.tistory.com/123
  • 스프링 기본편에서 다뤘던 내용이 중복되어있으므로 추가적인 내용으로 판단되는 것만 기술

1) 스프링 프레임워크

(1) EJB를 대체한 스프링

  • DI 컨테이너, MVC, DB 접근 기술 등의 수많은 기능을 제공하고 다양한 문제를 해결
  • 다양한 라이브러리들 편리하게 사용할 수 있도록 통합
  • 개발자의 생산성이 높아짐, 사용범위 확대
  • 자바 생태계의 사실상 표준 프레임워크

(2) 스프링 프레임워크 확대

  • 스프링과 그 생태계가 점점 커지고 기능도 점점 많아짐
  • 다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야함
  • 스프링으로 프로젝트를 시작할 때 필요한 설정이 점점 늘어남
  • 스프링으로 프로젝트를 시작하는 것이 점점 어려워지고 시작도 하기 전에 복잡한 설정 때문에 포기하는 일이 발생됨

(3) 무거운 스프링

  • 2010년을 넘어가면서 개발자들이 스프링은 무겁고 불편하다고 생각하기 시작하였음
  • 특히 처음 프로젝트를 시작할 때 설정해야하는 것이 너무 많았음
  • 스프링 자체가 어딘가에 불편을 느껴 이것을 해결하기위해 나왔는데, 이 당시의 다른 프레임워크 기술들은 별도의 설정이 없이 매우 편리하게 시작할 수 있었으며 톰캣 같은 WAS를 프레임워크에 내장하고있는 프레임워크도 있었음
  • 반면 스프링 프레임워크는 개발자들에게 너무 많은 선택권을 주었기 때문에 개발을 하려면 이것저것 조합해서 해야하는데 초보 개발자들은 스프링으로 간단한 애플리케이션을 만들어 보고싶어도 제대로 돌아가게 하려면 배워야할게 너무 많았음
  • 점점 사람들이 자주 사용하는 설정이나 라이브러리 등을 알아서 설정해주면 좋겠다는 생각들이 개발자들 사이에서 퍼지기 시작하였음

(4) 스프링 설정 지옥

  • 스프링 설정을 제대로 해서 스프링 프레임워크를 돌리려면 프레임워크를 알아야 설정을 할 수가 있었음
  • 스프링을 잘 알고 경험했던 개발자들은 귀찮았을 뿐이지 크게 어려움이 없었을지라도 초보개발자거나 새로 스프링을 배우고자하는 개발자들은 설정 시작조차 하지 못하고 어떤 라이브러리가 좋은지 알 수가 없어서 상당히 오랜 시간을 설정에 보냈어야 했음
  • 여러 오픈소스 라이브러리들이 호환이 잘 안되는 경우가 있었고 심지어 버전이 조금 달라도 잘돌아가던 라이브러리의조합이 돌아가지 않는 경우도 존재했었음

(5) 스프링 빈 등록 지옥

  • 이런 설정 지옥에 더해서 수 많은 라이브러리들을 스프링 컨테이너로 연동하기위해 스프링 빈으로 등록을 해야함
  • 새로운 프로젝트를 할 때마다 여러가지의 설정과 라이브러리의 조합, 그리고 빈등록을 반복해야하는 불편함을 해결하기위해 스프링 부트가 등장하게 됨

2. 스프링 부트의 등장

1) 스프링 부트

(1) BOOT, 부팅

  • 최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미
  • 어떤 일을 시작하기 위해 필요한 모든 준비를 마친다는 의미

(2) 스프링 부트

  • 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결하고 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작할 수 있게됨
  • 스프링을 편리하게 사용할 수 있도록 지원하고 최근에는 기본으로 사용함
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있고 관례에 의한 간결하게 설정을 할 수 있음

(3) 핵심 기능 5가지

  • 스프링부트는 기능이 어마어마하게 많지만, 정말 핵심기능은 설명하는 5가지로 볼 수 있으며 강의도 이 다섯가지 기능에 집중함
  • WAS: Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 라이브러리 관리: 손쉬운 빌드 구성을 위한 스타터 종속성을 제공하고 스프링과 외부 라이브러리의 버전을 자동으로 관리함
  • 자동 구성: 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동 등록함
  • 외부 설정: 환경에 따라 다랄져야 하는 외부 설정을 공통화함
  • 프로덕션 준비: 모니터링을 위한 메트릭, 상태 확인 기능을 제공

(4) 스프링 역사

  • 2003년 스프링 프레임워크 1.0 출시 - XML
  • 2006년 스프링 프레임워크 2.0 출시 - XML 편의 기능 지원
  • 2009년 스프링 프레임워크 3.0 출시 - 자바 코드로 설정
  • 2013년 스프링 프레임워크 4.0 출시 - 자바 8
  • 2014년 스프링 부트 1.0 출시
  • 2017년 스프링 프레임 워크 5.0, 스프링 부트 2.0 출시 - 리엑티브 프로그래밍 지원
  • 2022년 스프링 프레임워크 6.0, 스프링 부트 3.0 출시 - 자바 17, Jakarta EE

(5) 스프링 프레임워크와 스프링 부트

  • 스프링 부트는 스프링 프레임워크를 쉽게 사용할 수 있게 도와주는 도구일 뿐 본질은 스프링 프레임워크임
  • 하지만 스프링 부트가 제공하는 편의 기느이 너무 막강해서 스프링 부트 사용은 필수임
  • 스프링 부트는 스프링과 별도로 사용하는 것이 아님

(6) 스프링 부트를 배워야 하는 이유

  • 스프링 부트는 너무나 편리하고 너무 많은 것을 자동화해줌
  • 최소한 스프링 부트가 어떤 원리로 작동하는지 알아두어야 문제가 발생했을 때 해결이 가능함
  • 스프링 부트의 원리를 이해하면 문제점을 쉽게 파악할 수 있으나, 모르면 문제를 해결할 수가 없음
  • 스프링 부트가 수 많은 편의 기능을 제공함
  • 대부분의 개발자가 비슷하게 고민하는 기능을 스프링 부트는 이미 만들어서 제공하여 개발 시간을 엄청나게 단축 시켜줌
  • ex) 외부 설정, 액츄에이터를 통한 모니터링 관리 기능 등등..