[토비의 스프링] 8장 - 스프링이란 무엇인가?

suRan·2022년 8월 21일
0

🍏 토비의 스프링

목록 보기
1/1

토비의 스프링 3.1을 읽으며 정리한 내용으로, 독서 진도에 따라 포스팅이 수정될 수 있습니다.

8. 스프링이란 무엇인가?

8.1 스프링의 정의

스프링에 대해 가장 잘 알려진 정의

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 어플리케이션 프레임 워크

  • 애플리케이션 프레임 워크
    일반적인 프레임워크나 라이브러리는 한 가지 기술이나 특정 분야 업무에 특화된 기능을 제공한다. 하지만 스프링은 애플리케이션 프레임 워크로, 특정 계층이나 기술, 업무 분야에 한정되지 않고 애플리케이션의 모든 영역을 포괄하는 범용적인 프레임워크이다.

    애플리케이션 프레임워크의 목표는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는 것이다.

    스프링이 다루는 일부 영역만 본다면 스프링을 MVC 프레임워크로 오해할 수 있다. 또, 스프링이 제공하는 핵심기술에만 집중한다면 스프링을 IoC/DI 프레임워크나 AOP툴이라고 생각할 수도 있다. 그러나 스프링의 일차적인 존재목적은 핵심 기술 속의 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 어플리케이션전 계층과 영역전략과 기능을 제공해주고, 이를 통해 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크로 사용되는 것이다.

  • 경량급
    스프링이 경량급이라는 것은 스프링의 코드 규모가 아주 작거나 가볍다는 뜻이 아니다. 이는 불필요하게 무겁지 않다는 뜻이다

    개발환경과 서버 면의 경량급
    스프링은 이전의 복잡한 자바 엔터프라이즈 기술과는 달리 가장 단순한 서버환경 (Ex: 톰캣, 제티)에서도 완벽하게 동작한다. 서블릿 컨테이너만으로 충분하기 때문에 복잡하고 비싼 고급 WAS를 사용하지 않아도 된다. 스프링의 장점은 이런 가볍고 단순한 환경에서도 엔터프라이즈 개발의 고급 기술을 대부분 사용할 수 있다는 점이다.

    스프링 기반 코드 면의 경량급
    같은 기능을 수행하는 코드여도 기존 EJB나 다른 프레임워크에서 동작하던 코드보다 훨씬 더 가볍고 단순하다. 왜냐하면 스프링에서는 코드에 불필요하게 반복 등작하던, 프레임워크와 서버환경에 의존적인 부분을 제거해주기 때문이다.

  • 자바 엔터프레이즈 개발을 편하게
    스프링은 단순히 편리한 몇 가지 도구나 기능을 제공해주는 게 아니라 엔터프레이즈 개발의 근본적인 문제점에 접근해서 이에 대한 해결책을 제시한다.

    편리한 애플리케이션 개발이란 개발자가 복잡하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않으면서 애플리케이션의 핵심인 비즈니스 로직(사용자의 요구사항)을 빠르고 효과적으로 구현하는 것이다. 초기에 스프링 기본설정과 적용 기술만 잘 선택해서 준비해두면, 애플리케이션 개발 중에는 스프링 관련 코드나 API를 신경쓸 일이 거의 없다. 그럼 개발자는 스프링이 제공하는 기술이 아니라 애플리케이션의 로직에 더 많은 시간을 사용할 수 있게 된다.

  • 오픈소스
    스프링은 오픈소스 프로젝트 방식으로 개발되어 왔고 현재도 오픈소스 개발모델과 라이선스를 가지고 개발되고 있다(이 사실은 앞으로도 바뀌지 않을 것이다).

    오픈소스 모델의 장점은 공개된 커뮤니티 공간 안에서 투명한 방식으로 다양한 사람들의 참여를 통해 개발되기 때문에 매우 빠르고 유연한 개발이 가능하다는 것이다.

    오픈 소스 모델의 단점은 지속적이고 안정적인 개발이 지속될 지에 대한 여부가 불확실하다는 것이다. 오픈 소스 프로젝트는 상당수가 핵심 개발자의 일종의 취미활동으로 만들어진다. 스프링 개발자는 오픈소스의 이런 문제점과 한계를 잘 알고있었기 때문에, 전문 기업을 만들어 핵심 개발자가 정규 업무 시간에 풀타입으로 오픈소스 개발에 전념할 수 있도록 했다.

    스프링 소스
    스프링을 개발하고 있는 스프링 소스는 스프링의 창시자인 로드 존슨과 유겐 횔러 등이 주축이 되어 만든 회사이다. 스프링 소스는 2009년 VMWare에 전략 합병되어 이전보다 안정된 환경과 조직의 지원 속에서 스프링 개발에 전념할 수 있게 됐다.

profile
개발 공부를 해라

0개의 댓글