[Spring] Spring Boot와 Spring

수빈·2024년 11월 22일

Spring

목록 보기
4/5

Spring Framework는 Java기반 애플리케이션 개발에서 가장 많이 사용되는 프레임워크 중 하나이고, Spring Boot는 이를 더욱 간편하게 사용할 수 있도록 설계된 확장판이다. 이번에는 Spring Boot에 대해서 한번 정리를 해보겠다.



Spring Boot란?

Spring Boot는 Spring Framework를 기반으로 한 프레임워크로, 애플리케이션 개발을 더 빠르고 간단하게 만들기 위해 설계되었다. Spring의 강력한 기능을 유지하면서도 설정과 배포를 간소화하는 데에 초점을 맞췄다.

Spring Boot의 주요 특징

1. 자동설정(Auto Configuration)

  • application.properties 또는 application.yml 파일을 통해 필요한 설정을 자동으로 수행한다.
  • 개발자가 대부분의 설정을 직접 작성하지 않아도 된다.

2. 내장 웹 서버(Embedded Web Server)

  • Tomcat, Jetty와 같은 웹 서버를 내장하고 있어, 별도의 서버 설치 없이 실행 가능
  • 애플리케이션을 독립 실행형 JAR 파일로 배포할 수 있음

3. 스타터 의존성(Starter Dependencies)

  • spring-boot-starter-* 의존성을 사용해 필요한 라이브러리를 간단히 추가할 수 있음
  • 예: spring-boot-starter-web 은 웹 애플리케이션 개발에 필요한 모든 의존성을 포함한다.

4. 프로덕션 준비 기능

  • 애플리케이션 모니터링 및 관리 기능 제공(예:Actuator)
  • 기본 제공되는 메트릭 및 상태 점검 기능으로 운영 환경에서 유용.

5. 컨벤션 중심 개발(Convention over Configuration)

  • 표준화된 설정 방식을 제공하여 반복적인 설정 작업을 줄인다.

6. 빠른 개발 환경 제공

  • Spring Initializr 를 통한 프로젝트 생성
  • DevTools 로 애플리케이션 자동 재시작 기능 제공



Spring Framework 와 Spring Boot의 장단점

Spring Framework의 장단점

장점

  1. 유연성 : XML, Java Config 등 다양한 설정 방식 지원.
  2. 확장성 : 대규모 애플리케이션에서도 사용할 수 있는 강력한 기능 제공.
  3. 다양한 통합 기능 : 다양한 외부 라이브러리와의 연동 용이.

단점

  1. 복잡성 : 설정 파일과 의존성 관리가 복잡할 수 있음.
  2. 개발 속도 저하 : 수동 설정과 환경 설정 작업에 시간 소요.

Spring Boot의 장단점

장점

  1. 빠른 개발 속도 : 자동 설정과 내장 서버로 개발 시간 단축.
  2. 배포 간편성 : 독립 실행형 JAR 파일로 배포 가능.
  3. 초보자 친화적 : 기본 설정 제공으로 쉽게 시작 가능.
  4. 운영 지원 기능 : Actuator 등 프로덕션 환경에 유용한 도구 제공.

단점

  1. 제어부족 : 자동 설정이 모든 요구사항을 만족하지 못할 수도 있음.
  2. 큰 애플리케이션에서는 비효율적 : 대규모 프로젝트에서는 세부 설정이 필요할 수 있음.



Spring Framework VS Spring Boot

개발 기획단계에서 Spring Framework를 선택할 지, Spring Boot를 선택할 지에 대해서 고민이 많을 것 같다. 개발 기획 단계에서 프로젝트의 특성에 따라 언어를 선택하는 것이 좋을 것 같아 정리를 해두었다.

Spring Framework 를 선택해야 할 때

1. 대규모 애플리케이션 개발

  • 복잡하고 커스터마이징이 필요한 애플리케이션
  • 세밀한 제어와 설정이 중요한 프로젝트

2. 기존 Spring 프로젝트 유지/확장

  • 기존의 sprign 기반 애플리케이션을 유지하거나 확장해야 하는 경우

3. 특정 설정 방식이 필요한 경우

  • XML 기반 설정이나 Java Config의 유연성을 활용해야 할 때.

Spring Boot를 선택해야 할 때

1. 빠른 프로토타입 개발

  • 초기 MVP(Minimum Viable Priduct) 또는 빠른 프로토타이핑이 필요한 경우

2. 소규모/중소규모 프로젝트

  • 상대적으로 작은 애플리케이션이나 RESTful API 개발

3. 단일 서비스 아키텍처 개발

  • 독립적으로 실행 가능한 애플리케이션(JAR 배포)이나 마이크로서비스 개발.

4. 초보자 개발 환경

  • Spring 생태계에 익숙하지 않은 초보 개발자가 시작할 때.



추가적으로 알아두면 좋은 내용

Spring Initializr

  • Spring Initializr(https://start.spring.io/) 를 사용하면 Spring Boot 프로젝트를 쉽게 생성할 수 있다.
  • 필요한 의존성을 선택하면 초기 프로젝트 구조를 자동으로 생성해준다.

Spring Boot Actuator

  • 애플리케이션 상태 점검과 모니터링에 유용한 기능을 제공한다.
  • /actuator/health로 애플리케이션 상태 확인.

Spring Boot DevTools

  • 애플리케이션 변경 사항을 자동으로 감지하고 재시작하는 기능을 제공한다.
  • 빠른 개발 사이클 유지에 유용하다.




스프링 입문자로써 나는 스프링 부트를 사용하여 개발을 시작해보려한다..! 다음엔 Spring Boot를 사용하여 환경셋팅 및 간단한 API 생성하는 과정을 포스팅 해야겠다.
profile
Development History

0개의 댓글