🤔<스프링과 스프링부트>

 

📟< 스프링의 등장 >

Enterprise Application은 대규모의 복잡한 데이터를 관리하는 Application을 말한다.

소프트웨어 분야가 발전하며 Enterprise App은 점점 복잡해졌다. 예를 들어 은행 시스템을 생각해보면 몇 백만, 몇천만 사용자가 잔고 조회,입금,출금 요청을 한다. 이렇듯 Enterprise App은 많은 사용자의 요청을 동시 처리 해야 하므로 서버 성능,안정성,보안이 매우 중요하다고 볼 수 있다. 

그런데 이런 것들을 신경쓰면서 사이트 기능, 즉, Business Logic까지 개발하기는 매우어렵다. 

누군가 Enterprise App을 위한 개발 환경을 제공해서 기능 개발에만 집중할 수 있다면 얼마나 좋을까?

이런 상황에서 Spring Framework가 등장 했다. Spring framework는 앞서 언급한 서버 성능,안정성,보안을 매우 높은 수준으로 제공하는 도구였다. 덕분에 개발자들은 기능 개발에만 집중할 수 있게 되었다.


📟< 스프링을 더 쉽게 만들어주는 스프링 부트 >

스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있었다. 그래서 스프링을 개발팀에서도 이런 단점을 인식하고 단점으로 보완하고자 스프링 부트를 출시했다. 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구이다. 빠르게 스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 사용해 간편하게 의존성을 사용하거나 관리할 수 있다. 스프링 부트는 개발자가 조금 더 Business Logic 개발에만 집중할 수 있도록 만들어주는 도구인 것이다. 스프링과 비교했을 때 Springboot의 주요 특징은 다음과 같이 정리할 수 있다.

①.Tomcat,Jetty,Undertow 같은 웹 애플리케이션 서버 (Web application server, WAS)가 내장되어 있어 따로 설치하지 않아도 독립적으로 실행할 수 있다. 
②.Bulid 구성을 단순화 하는 Spring boot Starter를 제공한다.
③.XML 설정을 하지 않고 Java code로 모두 작성할 수 있다.
④.JAR를 이용해서 Java Option만으로도 배포가 가능하다.
⑤.App의 Monitoring 및 Manage tool인 Spring Actuator를 제공한다. 

🎯참고로 Spring boot와 Spring은 서로 다른 도구가 아니라 Spring boot는 Spring에 속한 도구이다. 단, Spring과 Spring boot는 개발할 때의 몇 가지 차이점이 있다. 그 차이점에 대해서 알아보자.

🌳<Spring과 Spring boot의 차이점 >

< 구성의 차이 >

Spring은 App 개발에 필요한 환경을 수동으로 구성하고 정의해야 한다. 하지만 Spring boot는 Spring core와 Spring MVC의 모든 기능을 자동으로 로드하므로 수동으로 개발 환경을 구성할 필요가 없다. 

 

< 내장 WAS 유무 >

Spring App은 일반적으로 Tomcat과 같은 WAS에서 배포된다. WAS란 간단히 Web App을 실행하기 위한 장치를 말한다.

하지만 Spring boot는 자체적으로 WAS를 가지고 있다. 그래서 jar file만 만들면 별도의 WAS setting을 하지 않아도 App을 실행할 수 있다. 참고로 Spring boot의 내장 WAS에는 Tomcat,Jetty,Undertow가 있어 상황에 필요한 WAS를 선택할 수도 있다. 그 외의 차이점 아래의 표와 같다.

 

  Spring Spring boot
목적 Enterprise App 개발을 더 쉽게 만들기 Spring 개발을 더 빠르고 쉽게 하기
설정 파일 개발자가 수동으로 구성 자동 구성
XML 일부 파일은 XML로 직접 생성,관리 사용하지 않는다
인메모리 데이터베이스  지원 지원하지 않는다 인메모리 데이터베이스 자동 설정 지원
서버 프로젝트를 띄우는 서버(예: Tomcat,Jetty)를 별도로 수동 설정  내장형 서버를 제공해 별도의 설정이 필요 없다.

 

 

참고 : 스프링 부트 3 백엔드 개발자 되기 : 자바 편

+ Recent posts