[Spring]Spring vs Spring boot

HelloWorld·2022년 9월 21일
0

a knowing

목록 보기
2/3

1. Spring이란?


Spring이란 Spring Framework, Spring Boot, Spring Data 등등 여러 프로젝트들의 모음
(https://spring.io/projects)

스프링을 통해 웹 개발 뿐만 아니라 Microservies, Reactive, Cloud, Web apps, Serverless, Event Driven, Batch 등 여러 가지가 가능함

Spring은 프로젝트 별로 하위 프로젝트(모듈)을 가지고 있음
각자가 개발하려는 애플리케이션에 맞게 각 프로젝트에서 제공해주는 모듈들을 조합해서 사용하면 됨
ex. 스프링 프레임워크 모듈에는 웹 MVC 뿐만 아니라 약 20개의 모듈 존재

Spring은 Spring 프로젝트들의 모음을 이야기하고, 프로젝트들마다 하위모듈이 존재

Spring 프로젝트들은 스프링 프레임워크 기반에서 돌아감
ex. 스프링 데이터, 스프링 데이터 JDBC, 스프링 데이터 JPA 등의 모듈을 사용할 때는 스프링 프레임워크가 꼭 필요함

2. Spring Framework란?

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.
(Spring은 어떤 종류의 배포 플랫폼에서도 최신 자바 기반 기업용 애플리케이션을 위한 종합적인 프로그래밍 및 구성 모델을 제공해준다.
Spring의 핵심 요소는 에플리케이션의 수준에서의 인프라 지원이다. Spring은 기업용 애플리케이션의 plumbing에 초점을 맞춰 팀이 특정 배포 환경과 불필요한 시도 없이 애플리케이션 수준의 비즈니스 로직에 집중할 수 있게 해준다.)

"자바 기반" = 객체지향 언어가 가진 특징을 잘 활용하게 해주면서
"비즈니스 로직에만 집중" = 다른 부분은 신경쓰지 않고 비즈니스 로직에만 집중 할 수 있게 해줌

즉, Spring Framework는 객체 지향의 특징을 잘 활용할 수 있게 해주며, 개발자들은 핵심 비즈니스 로직 구현에만 집중할 수 있게 해주는 프레임워크

초기 Spring 기본 설정만 잘 해놓는다면, 스프링 관련 코드를 신경 쓸 일 거의 없음

  • 스프링의 기본 전략
    : 비즈니스 로직을 담은 코드와 엔터프라이즈 기술을 처리하는 코드 분리
  • 코드 분리로 인해 개발자들은 이제 객체지향 설계에 초점을 맞출 수 있고 이를 돕기 위해 스프링은 DI 같은 기능 제공
  • Spring Framework는 DI나 IoC같은 기능을 통해 객체지향 특징 중 다형성을 극대화해서 사용할 수 있게 해줌
    (느슨하게 결합된 애플리케이션)

3. Spring Boot란?

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration.
(Spring Boot는 독립적이며, 운영 할 수 있는 수준의 Spring 기반 애플리케이션을 쉽게 만들 수 있게 해준다. 그냥 실행해라.
최소한의 설정으로 Spring 플랫폼과 서드파티 라이브러리를 사용할 수 있다. 대부분 Spring Boot 애플리케이션은 최소한의 Spring 설정을 필요로한다.)

Spring Boot는 Spring Framework 기반의 애플리케이션을 쉽게 만들 수 있게 해주는 것

Spring Boot가 나왔다는 것은 Spring의 어떤 부분들이 불편해서 개선하고 싶었다는 것!
어떤 부분 때문에 Spring Boot가 나왔을까?

Spring Framework는 초창기에 애플리케이션 개발에 필요한 객체들을 생성하고 객체 사이의 의존성을 제공해주는 역할만 했으나 점점 다양한 기술들을 지원하기 시작함
➡️ 복잡해지니 개발자가 처리해야되는 설정도 많아지고 복잡해짐 (초기 설정이 중요한데, 초기 설정이 쉽지 않은 일이 되어버림)
➡️ Spring Boot라는 서버 프로젝트 진행됨

✔️ Spring Boot는 약간의 설정만으로 Spring 애플리케이션을 만들 수 있게 해줌
✔️ Spring Boot는 Spring 프로젝트 중 하나로, Spring Framework를 쉽게 사용하게 해주는 도구이지, Spring Framework와 별개로 사용할 수 있는 것이 아님

4. Spring Boot를 사용하면 달라지는 점

Spring Boot가 지원하는 여러가지 설정 중 대표적인 4가지

  • 의존성 관리
    기존 Spring : 개발에 필요한 모듈의 의존성을 각각 다운받아야함 + 각 모듈의 버전을 개발자가 하나하나 명시해줘야 함
    👎 모듈 간에 의존성이 존재하는 경우가 있고, 서로 버전 때문에 충돌이 일어날 수도 있음 (개발자가 직접 설정)
    Spring Boot : "spirng-boot-starter"를 지원해 줌 + 자주 사용하게 되는 모듈 간의 의존성과 버전 조합을 제공해줌
    ✔️ spring-boot-starter-parent : 각 모듈의 현재 Spring Boot 버전에 가장 적합한 버전을 제공해줌

  • 자동 설정
    기존 Spring : 많은 환경설정 필요
    Spring Boot : 어노테이션을 통해 자동 설정

  • 내장 WAS(Web Application Server)
    기존 Spring : 애플리케이션 WAR 패키징 ➡️ WAS 설치(Tomcat, Undertow, Jetty) ➡️ WAS에 WAR 파일 올리기
    Spring Boot : WAS가 내장되어 있음
    웹 애플리케이션을 WAR 파일이 아닌 JAR파일로 패키징하여 바로 사용할 수 있음
    (WAR, JAR 모두 사용 가능)

  • 모니터링
    Spring Boot : "Actuator"는 애플리케이션의 관리 및 모니터링을 지원해줌

✔️Actuator : 상용 서비스 수준에서 필요로 할 모니터링 기능을 엔드포인트로 미리 만들어서 제공해줌
⚠️ Actuator는 민감한 정보도 많이 제공하기 때문에 운영 시에는 Spring Security 등을 이용하여 보안에 신경써줘야 함 / Actuator의 데이터를 영구 저장소에 저장해주지 않으면 없어질 수 있음

5. 정리

Spring은 Spring Framework를 기반으로 여러 서브 프로젝트들의 모음으로 이루어져 있으며, 서브 프로젝트들은 여러 모듈을 가지고 있음. 개발할 애플리케이션에 맞게 모듈들을 조합해서 사용함

Spring Boot도 Spring 프로젝트 중 하나로, Spring Fremework와 별개로 사용할 수 없으며 Spring을 편하게 사용하게 해주는 역할.

Spring Boot는 의존성 관리, 자동 설정, 내장 WAS, 모니터링 등의 장점이 있음

🏀 에어의 Spring vs Spring Boot

0개의 댓글