Spring과 SpringBoot

Java 기반의 애플리케이션 프레임워크입니다. 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공합니다. 그리고 스프링부트는 스프링의 다양한 프로젝트 중 하나이죠.

이번에는 이 둘이 무엇인지, 그리고 그 차이는 무엇인지에 대해 알아보겠습니다.

Spring

스프링 프레임워크는 자바에서 가장 많이 사용하는 프레임워크로, 현재 우리나라의 전자정부 프레임워크의 기반 기술로 채택되어, 공공기관 웹 서비스 개발의 표준입니다.

자바로 애플리케이션을 개발하는 데 필요한 기능을 제공하고, 쉽게 사용할 수 있도록 돕는 도구입니다. DB와의 연동 기능, 애플리케이션 개발에 필요한 다양한 의존성 기능들을 개발자가 쉽게 사용할 수 있도록 제공해주고, 개발자는 로직 구현에만 집중할 수 있게 해주죠.

SpringBoot

스프링 프레임워크는 정말 다양한 기능을 제공합니다. 하지만 기능이 많은 만큼 설정이 복잡하다는 단점이 있습니다. 스프링부트는 “최소한의 구성”으로 “실행 가능한 상용 수준의 애플리케이션”을 만들 수 있는 스프링 프레임워크 기반 솔루션입니다. 복잡한 설정을 단순화하여 애플리케이션을 손쉽게 만들 수 있도록 도와주는 솔루션이죠.

프레임워크

복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조. 번역하면 뼈대 혹은 골조 라고 할 수 있습니다. 목적을 달성하기 위해 필요한 라이브러리나 클래스 등이 미리 갖춰져 있는 “규격화된 작업대” 라고도 볼 수 있겠습니다.

Java의 Spring, Python의 Django나 Flask, Ruby, IOS와 MAC OS의 Cocoa 등이 있습니다.

좀 더 와닿을 수 있는 예시로 “로봇 만들기 키트”를 생각해보면 좋겠습니다. 이 키트는 “로봇”을 만들기 위한 여러 가지 도구들을 제공해줍니다. 동력원으로 쓰이는 배터리 모듈, 부분과 부분을 연결할 수 있는 관절 모듈, 작동 여부를 결정하는 스위치 모듈 등. 그리고 사용자는 이 모듈들을 이용해서 원하는 모습과 기능을 가진 로봇을 만들게 됩니다.

소프트웨어 프레임워크도 이와 비슷합니다. 데이터베이스와의 연동을 지원하는 모듈, 로직과 뷰를 연결하는 모듈 등. 개발자는 이러한 다양한 모듈들을 이용해 하나의 애플리케이션을 더욱 쉽게 만들 수 있는 것이죠.

만약 프레임워크가 없다면 개발자는 모듈이 제공하는 기능에 해당하는 것을 모두 직접 구현해야 하는 것이죠. 하지만, 프레임워크는 이런 기능들을 제공함으로써 개발 과정을 간편하게 해주는 데 그 의의가 있습니다.

엔터프라이즈급 개발

기업 환경을 대상으로 하는 개발을 뜻합니다. 네이버나 카카오톡 같은 대규모 데이터를 처리하는 환경을 엔터프라이즈 환경이라고 부릅니다. 스프링은 이러한 개발에 맞게 설계되어 있어, 개발자는 애플리케이션을 개발할 때 많은 요소를 프레임워크에 위임하고, 로직 구현에 집중할 수 있습니다.

Reference

스프링과 스프링 프레임워크 : 스프링부트 핵심 가이드 (장정우 저)
프레임워크 : https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC
스프링부트 추가설명 : https://en.wikipedia.org/wiki/Spring_Boot#cite_note-FOOTNOTEWalls2016vii%C2%A7foreword-2