김동형수 개발기

왜 Spring Framework를 선택할까? 본문

이론정리

왜 Spring Framework를 선택할까?

김동형수 2020. 3. 20. 12:34

Intro

군대에 입대해서 처음 개발에 몸을 담굴 때 Spring Framework라는 것을 처음 접했습니다.

 

그때는 뭔지도 모르고 사용하고 있었고 지금도 희미하게 알고 사용하지만 '왜' 사용하는지는 모르고 있었습니다.

 

어떠한 장점이 있고 Framework는 뭐고 Spring Framework가 뭐가 좋길래 사용하는지 늦었지만 알아보고자 합니다.


Content

 

Framework란?

 

위키백과에서 확인해본 결과 

소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. 이렇게 매우 폭넓은 정의는 이 용어를 버즈워드(buzzword)로서, 특히 소프트웨어 환경에서 사용할 수 있게 만들어 준다.

제가 이해한 대로 말해보자면, Framework는 프로젝트를 진행하는데 필요한 코드들을 구조화해서 기본으로 가지고 있는 프로젝트 라고 생각됩니다.

 

그럼 이제 Spring Framework를 도대체 '왜' 쓰는지, 뭐가 그렇게 좋은 것인지 알아보도록 하겠습니다.


Spring Framework의 정의

 

위키백과에서 확인해본 결과 

스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

Spring Framework의 특징

 

  • 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  • 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
  • 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
  • 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
  • 스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
  • 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

Spring Framework의 장점

 

위에서 Spring Framework는 뭐고 어떠한 특징이 있는지 찾아봤다 그럼 이제 '왜', '뭐가 좋아서' 사용하는지 알아보도록 하겠습니다.

 

1.복잡함에 반기가 들어서 만들어진 프레임워크

 - EJB에 비해 가볍기 때문에 엔터프라이즈(구조가 복잡하고 많은량의 소스코드)급의 시스템을 더 빠른 시간에 작성 가능.

 

2. 프로젝트의 전체 구조를 설계할때 유용한 프레임워크

- 기존의 프레임워크들은 웹, 또는 하드웨어, 데이터베이스등 전문적인 영역만 지원하는 경우가 많은데, 스프링은 어느 한 분야에 집중하기 보다, 전체를 설계하는 용도로 사용

 

3. 다른 프레임워크의 포용

- 스프링은 전체 구조에 집중했기에 특정영역의 프레임워크와 공존하는 방식으로 사용 가능.

 

 

IoC, DI 등 스프링의 특징이 개발자가 전체적으로 신경써야할 부분에 대해서 스트레스를 줄여주고 비지니스 로직에 집중할 수 있기 때문에 생산성 향상됩니다.


Finish

빼먹은 부분도 있겠지만 명확하게 '이래서 스프링을 써야해!' 라는 내용의 글은 찾지 못했지만 Spring Framework를 선택하는 이유는 위에서 언급한 여러 가지의 특징과 장점 때문인 것 같습니다.

 

하지만 개인적으로 가장 높게 평가하는 부분은 '대중성'인 것 같습니다.

 

많은 사람이 사용하고 자료가 많다는 것은 그만큼 러닝커브가 다른 기술에 비해서 비교적 완만한 모양새로 그려지기 때문에 많은 사람들이 Spring Framework를 채택하는 것이 아닌 가 싶습니다.


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://ko.wikipedia.org/wiki/%EC%8A%A4%ED%94%84%EB%A7%81_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC
https://scvgroup.tistory.com/61
Comments