마이의 개발 블로그

[Spring] 스프링 프레임워크(Spring Framework)와 스프링 부트(Spring Boot) 본문

개발지식/Spring

[Spring] 스프링 프레임워크(Spring Framework)와 스프링 부트(Spring Boot)

개발자마이 2023. 9. 14. 18:39
반응형

서론

앞서 스프링 프레임워크를 사용하는 이유에 대해 간단히 살펴봤습니다. 스프링 프레임워크는 자바 기반의 오픈 소스 애플리케이션 프레임워크로, 어플리케이션 개발을 위한 다양한 기능과 라이브러리를 제공하고 프로그램 전체 흐름을 제어하여 개발자가 핵심 로직에만 집중할 수 있도록 돕습니다. 그렇다면 스프링 부트는 언제 사용되는 걸까요?

스프링 부트(Spring Boot)의 목적

어플리케이션 개발이 고도화됨에 따라 스프링도 어플리케이션의 용도에 따라 다양한 기능(클라우드, 시큐리티, MVC, 부트 등)을 제공하게 되었습니다. 스프링 부트는 스프링 기반 어플리케이션 개발을 더욱 효율적으로 만들기 위해 고안된 프로젝트로, 기존에 스프링 프레임워크만을 사용하여 개발 할 때에는 개발자가 직접 설정하고 관리해야했던 여러 부분을 자동화시켜 개발자가 별도의 설정 없이 프로덕션 등급의 어플리케이션 개발을 할 수 있도록 만들어줍니다. 스프링 부트의 주요 특징은 아래와 같습니다.

 

- 웹 서버(Tomcat, Jetty or Undertow)를 내장하여 별도의 설치 없이 바로 실행 가능(WAR -> JAR)

- 스타터 패키지(사전에 정의된 의존성 패키지)를 제공하여 빌드를 간소화 e.g. spring-boot-starter-web

- 클래스 경로나 기본 설정파일에 포함된 스프링, 서드파티 라이브러리를 자동으로 설정해줌

- 코드 작성없이 자동으로 XML 설정

- 프로덕션에 사용 가능한 측정통계(metrics), 헬스체크(health check), 환경 설정(DB, 보안 등) 기능 제공

언제 스프링부트(Spring Boot)를 사용해야할까?

프로젝트를 처음부터 시작하여 빠른 개발과 배포가 필요한 경우 스프링 부트를 고려해볼 수 있습니다. 또한 DB, 보안, 테스트, 컨테이너 생성 등의 외부 기능의 간편한 구성과 사용을 필요로 하는 경우에도 스프링 부트는 매우 유용합니다. 스프링 부트에서는 몇 번의 클릭과 의존성 추가 코드만으로도 간단하게 보안 기능을 설정하고, DB를 연결하고, 도커 이미지를 생성할 수 있습니다. 개발자는 약간의 구성만으로도 바로 실행되어 웹서버에서 동작이 가능한 어플리케이션을 갖게 됩니다. 이러한 특징들로 인해 스프링 부트는 MSA(micro service architecture) 프로젝트들을 개발하고 관리하기에도 적합하다고 여겨집니다.

 

다만 이미 만들어진 프로젝트를 최신화하고자 스프링 부트 프로젝트로 마이그레이션할 필요가 있는지는 프로젝트의 성격이나 마이그레이션 비용을 고려하여 결정할 문제입니다. 금융이나 MES처럼 보수적으로 운영되어야 하거나 규모가 매우 큰 프로젝트, 커스터마이징이 많이 이루어지는 솔루션 개발 등의 프로젝트에는 굳이 스프링부트가 필요하지 않을 수 있기 때문입니다. 여전히 수익을 내는 많은 프로젝트들이 레거시 코드로 개발되고 관리되는 것을 보면 정해진 답은 없는 것 같습니다.

스프링 부트(Spring Boot)로 프로젝트를 생성하는 방법 (IntelliJ)

인텔리제이에서 스프링 부트를 통해 프로젝트를 시작하는 방법은 매우 간단합니다. 프로젝트를 생성할 때 좌측에서 Spring Initializer를 선택하여 프로젝트 설정 후 생성하면 됩니다. 첫 페이지에서는 프로젝트명, 프로젝트 위치, 언어, 타입(Gradle or Maven), 그룹명, 아티팩트명, JDK, Java버전, 패키징(Jar or War)을 설정할 수 있고,  두번째 페이지에서는 필요한 의존성을 체크하여 추가할 수 있습니다.

 

첫 번째 페이지 - 프로젝트 설정
Spring Initializer - 의존성 추가 (나중에 추가 가능)

 

Create 버튼을 눌러 프로젝트를 생성하면 의존성을 다운로드하고 프로젝트를 구성하는 데에 시간이 조금 걸립니다.

 

프로젝트 구성 중

 

구성 완료 후 별도의 설정 없이 DemoApplication을 실행한 모습입니다. 웹 서버에서 어플리케이션이 바로 동작하는 것을 확인할 수 있습니다.

 

반응형
Comments