Skip to content

Spring Boot Spring Framework #
Find similar titles

Structured data

Category
Programming

Spring Boot #

Spring frameWork의 단점 #

Spring Framewokr는 우리나라 국가 표준으로 사용되는 프레임 워크이다. 대부분의 자바 프로젝트에서 채택하고 있는 명실상부 1위의 프레임 워크이며 개발자들의 본 업무 외적인 시스템 내부 작업을 아주 간편하게 해결해주고 있다. 하지만 이런 스프링 프레임워크의 편리함 때문에 개발자들의 스프링의 이해도는 낮은 편이며 스프링 프로젝트 시 복사, 붙여넣기 식의 개발이 만연해 있다. 게다가 스프링의 초기 셋팅조차 손을 못대는 경우가 많다. 이를 간단하게 정리하면 다음과 같다.

  • 전자정부 프레임워크는 안정성이 중요하기 때문에 4.x버전이 나왔음에도 3.x버전을 사용하고 있다. 이는 관 주도의 표준안 적용으로 인해 변화와 혁신에 대한 도입이 많이 늦는 편이다.
  • 개발자들이 개발할 때 과거에 성공적으로 사용했던 버전 및 기본 설정만을 가져다 쓰다보니 프로그램 모델이 경직돼 있다. 따라서 새롭고 효율적인 변화에 대한 도전이 부족하다.
  • 스프링을 잘 아는 기술 전문가에 많은 의존을 하고 있다 보니 기술 지원 전문가가 부재 중 일 경우에 문제가 발생했을 시 프로젝트 전체에 영향을 미친다.
  • 개발자가 개발한 프로젝트를 운영서버에 배포(이행)하는 것은 더욱 더 전문가에 의존해야만 한다. 그러다보니 프로젝트의 효율성이 떨어지고 시간과 인력, 비용적인 측면에서 손실이 발생한다.

Spring Boot 란? #

Spring Boot는 자바 기반으로 만들어진 독립 실행형 프레임워크로 바로 실행이 가능한 프로덕션 급 Spring 기반 응용 프로그램을 쉽게 만들 수 있다. Spring 플랫폼과 써드 파티 라이브러리에 대한 불만을 기반으로 만들어진 Spring boot Framework는 Spring 구성이 거의 필요하지 않다.

특징 #

  • POJO(Plain Old Java Object) : POJO는 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종소된 무거운 객체들을 만드는 것에 대해 반발하며 나타난 용어다. 별도의 프레임워크 없이 Java EE를 사용할 때에 비해 특정 인터페이스를 직접 구현하거나 상속을 받을 필요가 없기 때문에 기존 라이브러리를 지원하기 용이하다. 스프링 프레임워크의 경우 대표적인 POJO 방식의 프레임워크이다.
  • AOP(Aspect Oriented Programming) : 보안, 로깅, 트랜잭션 등 여러 모듈에서 공통적으로 사용되는 기능을 분리하여 관리할 수 있도록 만든 프로그래밍 패러다임으로 cross-cutting concern의 분리를 허용함으로써 모듈성을 증가시켰다. 코드 자체는 수정하지 않고 그 대신 기존의 코드에 새로운 Advance를 추가함으로써 수행하며 어느 코드가 point cut 사양을 통해 수정되는지를 따로 지정한다. 이를 통해 기능의 코드 핵심부를 난잡하지 않도록 정리해주며 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 쉽게 추가할 수 있다.
  • DI(Dependency Injection) : 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되게 하는 디자인 패턴 중의 하나이다. 의존 관계를 설정함으로써 모듈 간의 결합도를 낮출 수 있다. 또한, 코드의 재사용성을 높여 작성된 모듈을 여러 곳에서 소스코드의 수정 없이 사용할 수 있고, Mock Object 등을 이용한 unit test로 편의성을 높여준다.
  • IoC(Inversion of Control) : 초기 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용하곤 했다. IoC의 경우는 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다.
  • 이외에도 기본설정 자동수행, 자동연결 강화, 자주 사용되는 프로젝트 조합을 미리 준비하고 'Starter' POM으로 메이븐 설정을 간소화 하는 등의 특징을 갖추고 있다.
  • 추가로 stand-alone Tomcat 기능을 포함하고 있고, Jetty, Undertow를 직접 포함 가능하기 때문에 WAR 파일로 배포할 필요가 없다.
  • MSA(micro service architecture)에서 활용을 권장하고 있다.

장점 #

  • 수작업으로 초기 세팅하는 과정 없이 간단한 방법으로 프로젝트를 만들 수 있다. 스프링에서 제공하는 Spring Tool Suite 개발 도구를 사용하면 기본적인 프로젝트 성격과 프로젝트에 필요한 라이브러리도 선택할 수 있다. 손수 프로젝트를 세팅한다해도 스프링 프레임워크를 사용할 때보다 반 이상 단순해진다.
  • 프로젝트를 진행 할때 기본적으로 설정하게 되는 부분들은 이미 Spring boot에서 지원하고 있고 개별적으로 설정해야되는 부분만 설정 파일에 적용하면 된다.예를들면, DB연결 설정 시 드라이버나, 트랜잭션 같은 것들은 알아서 지원한다.
  • Spring Security, Spring Data JPA와 같은 다른 Spring FrameWork 구성 요소들을 쉽게 가져다 쓸 수 있으며 이 과정에서 프로토타이핑이나 기능을 시험해보는 시간이 전보다 단축된다.
  • Tomcat이나 Jetty를 기본적으로 내장할 수 있으며 WEB 프로젝트를 동작하는 시간이 Tomcat을 독립적으로 사용했을 때보다 적은 시간이 걸린다. 또한 서블릿 컨테이너가 내장될 수 있으므로 프로젝트를 .jar 형식으로 간단히 만들어 배포할 수 있다.
0.0.1_20140628_0