본문 바로가기
Spring

Spring vs Spring Boot

by 매트(Mat) 2021. 4. 15.

Spring vs Spring Boot

백엔드에 관심이 있다면 Spring 프레임워크에 대해서는 한번쯤은 들어봤을 것 같습니다.
Spring은 워낙에 방대해서 여러 프로젝트들이 있습니다.
Spring Boot, Spring Framework , Spring Data, Spring Cloud, Spring Security 등등 많아서 처음에 배울 때 고민을 하죠. (Spring 프로젝트들 링크)
"Spring은 너무 어려울 것 같은데 그냥 Nodejs로 배워볼까.."



Spring

Spring이전에는 EJB(Enterprise Java Beans)라는 자바 표준 기술을 사용했습니다. 주로 웹 시스템에서 사용하고, 업무 로직을 처리하는 서버 애플리케이션입니다. EJB는 단점들이 치명적이었습니다.

  • EJB에 의존적이서 코드가 복잡하고 컨테이너 실행시키는데 매우 느리다.
  • 비용이 비싸다.

이러한 단점들 때문에 개발자들이 고생하던중 스프링이 탄생하게 되는데, 로드 존슨이 2002년에 출판한 자신의 저서인 Expert One-on-One J2EE Design and Developement 에 선보인 코드를 기반으로 시작하여 점점 발전하게 되었습니다.

캡처
  • 자바 표준 기술을 이용한 오픈 소스 웹어플리케이션 프레임워크로 무료이다. Overview
  • EJB에 비해 복잡하지 않고 심플하고 속도도 빠르다.

그럼에도 요즘 Spring을 사용하기 위한 설정들이 복잡합니다.
"오죽하면 프로젝트의 50%가 설정이다"
할 정도로 설정이 복잡하고 이것때문에 Spring을 포기하는 사람들이 많습니다.
하지만 이 복잡한 스프링을 편리하게 사용할 수 있도록 지원해주고, 최근에는 이것을 자주 사용합니다.



Spring Boot

  • Tomcat 같은 웹 서버를 따로 설치하지 않아도 Spring Boot 내부에 내장되어 있어서 바로 실행시킬 수 있음.
  • 필요한 모든 라이브러리를 하나하나씩 다 가져올 필요없이 starter 의존성 하나만 가져오면 그것에 필요한 라이브러리들은 자동으로 가져와짐.
  • 외부 라이브러리 버전을 자동으로 관리.
  • 간결해진 설정.
  • Spring Boot를 사용함으로서 서버 로직에 좀 더 집중할 수 있게 해줌.


Spring과 Spring Boot는 아에 서로 다른 것인가?

둘은 서로 아에 다른 것이 아닙니다.
Spring Boot는 Spring Framework의 핵심 기술들(DI, AOP, JPA...)을 쉽게 사용할 수 있게 해주는 도구입니다.
따라서 Spring Boot만으로는 뭔가를 동작하게 할 수는 없고 Spring의 핵심 기술들을 가지고 그것들을 손쉽게 사용 가능하게 만듭니다.



Spring의 본질

  • 자바의 가장 큰 특징은 객체 지향 언어
  • 스프링은 자바의 가장 큰 특징을 잘 살려 좋은 객체 지향 프로그래밍을 개발할 수 있도록 도와주는 프레임워크


왜 이름을 Spring?..

Fortunately Yann stepped up with a suggestion: “Spring”. His reasoning 
was association with nature (having noticed that I'd trekked to Everest 
Base Camp in 2000); and the fact that Spring represented a fresh start 
after the “winter” of traditional J2EE. We recognized the simplicity 
and elegance of this name, and quickly agreed on it.

링크

스프링을 스프링으로 네이밍을 한 이유는 전통적인 J2EE(EJB)의 겨울을 넘겨 새로운 시작이라는 뜻에서 비롯된 것입니다.





참고

댓글